標準モジュールdifflib
まず、分割されたリストs1とs2の中身を比較してみます。 before.py、after.pyという名前は判別用ですが、適当につけてもよいかと。import difflib
s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
sys.stdout.writelines(difflib.context_diff(s1, s2, fromfile='before.py', tofile='after.py'))
出力は*** before.py
--- after.py
***************
*** 1,4 ****
! bacon
! eggs
! ham
guido
--- 1,4 ----
! python
! eggy
! hamster
guido
となって、どちらにもあるguidoには!がついていませんが、どちらかにしかない項目には!がついています。テキストでdiffを見る
テキストの文字列は、文字のリストにしてから同様の操作をします。
text1 = ''' 1. Beautiful is better than ugly.
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated.
'''.splitlines(keepends=True)
text2 = ''' 1. Beautiful is better than ugly.
3. Simple is better than complex.
4. Complicated is better than complex.
5. Flat is better than nested.
'''.splitlines(keepends=True)
という例を使います。keepends=True は改行を残すかどうかどうかで、デフォルトではFalseになっています。*** before.py
--- after.py
***************
*** 1,4 ****
1. Beautiful is better than ugly.
- 2. Explicit is better than implicit.
3. Simple is better than complex.
! 4. Complex is better than complicated.
--- 1,4 ----
1. Beautiful is better than ugly.
3. Simple is better than complex.
! 4. Complicated is better than complex.
! 5. Flat is better than nested.
-, + という記号は1つめあるいは2つめにしかない、という結果を表しています。
0 件のコメント:
コメントを投稿