Pythonでは、2つの単純な文字列の違いを強調するHTMLを生成します

StackOverflow https://stackoverflow.com/questions/9396254

  •  29-10-2019
  •  | 
  •  

質問

Pythonを使用して2つの単純な文字列の違いを強調表示し、異なる部分文字列をHTML span属性で囲む必要があります。だから私は次の例で示されている関数を実装する簡単な方法を探しています:

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

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

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

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

役に立ちましたか?

解決

あなたが必要とするものはすべてdifflibから出てきます-例えば:

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

そのリストの各要素は、2つの入力文字列の文字であり、接頭辞には次のいずれかが付いています

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

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

Difflibが廃止されたり廃止されたりすることについては言及されていません ドキュメント.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top