5

異なるサブ文字列をHTMLスパン属性で囲んで、Pythonを使用した2つの単純な文字列の違いを強調する必要があります。したがって、次の例で示す関数を実装する簡単な方法を探しています。

hightlight_diff('Hello world','HeXXo world','red')

...文字列を返す必要があります:

'He<span style="color:red">XX</span>o world'

私はグーグルでdifflibが言及されているのを見ましたが、それは時代遅れであると思われ、良い簡単なデモは見つかりませんでした。

4

1 に答える 1

8

必要なものはすべて difflib から得られます。たとえば、次のようになります。

>>> import difflib
>>> d = difflib.Differ()
>>> l = list(d.compare("hello", "heXXo"))
>>> l
['  h', '  e', '- l', '- l', '+ X', '+ X', '  o']

そのリストの各要素は、2 つの入力文字列の文字であり、次のいずれかのプレフィックスが付いています。

  • " "(2 つのスペース)、両方の文字列のその位置に存在する文字
  • "- "(ダッシュ スペース)、最初の文字列のその位置に存在する文字
  • "+ "(プラス スペース)、2 番目の文字列のその位置に存在する文字。

そのリストを反復すると、作成しようとしている出力を正確に作成できます。

docsでは、difflib が何らかの形で廃止または廃止されたという言及はありません。

于 2012-02-22T14:30:18.047 に答える