2012-02-22 34 views
5

我需要用python突出顯示兩個簡單字符串之間的差異,並將不同的子字符串括在HTML span屬性中。所以,我在找落實以下例子可以說明功能的簡單方法:在python中,生成突出顯示兩個簡單字符串差異的HTML

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

...它應該返回字符串:

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

我用Google搜索和看到difflib提到,但它應該是過時的,我還沒有找到任何好的簡單演示。你需要

+0

如果找到差異,它是否總是顯示第二個字符串的子字符串(在你的例子中:''XX'')?你只是在尋找位置差異嗎?這意味着,'s1 [0]'用's2 [0]','s1 [1]'用's2 [1]'等等...... – juliomalegria 2012-02-22 14:04:57

+0

這與[Here](http: /stackoverflow.com/questions/1576459/generate-pretty-diff-html-in-python) – 2012-02-22 14:05:05

+0

@ julio.alegria嗯,我有興趣突出第一個字符串的不同部分,以及我的例子中的'll'。事實上,我正在尋找位置差異。 – user1069609 2012-02-22 14:12:31

回答

7

一切都出來difflib的 - 例如:

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

在該列表中的每個元素都是一個字符從兩個輸入字符串,用

  • " "一個(前綴2個空格),字符出現在兩個字符串中的該位置
  • "- "(破折號空格),字符出現在第一字符串中的該位置
  • "+ "(加空格),字符出現在第二個字符串中的該位置。

遍歷該列表,您可以精確構建您要創建的輸出。

docs中沒有提及difflib以任何方式被廢棄或棄用。

+0

謝謝,這正是我需要的東西!我認爲difflib應該從「Python Essential Reference 4th ed。」這本書中過時。作者:D. M. Beazley 2009年,第586頁:「字符串處理。以下模塊是一些舊的,現在已經過時的模塊,用於字符串處理... difflib,fpformat,stringprep,textwrap」 – user1069609 2012-02-22 14:41:10

相關問題