Skip to main content
 首页 » 编程设计

Python Difflib之如何使用 "Change"Op 获取 SDiff 序列

2024年08月29日29shanyou

我正在阅读 Python 的 difllib 文档.根据每个文档,Differ delta 给出了一个序列

Code    Meaning 
'- '    line unique to sequence 1 
'+ '    line unique to sequence 2 
'  '    line common to both sequences 
'? '    line not present in either input sequence  

但是“Change”操作呢?我如何获得类似于 Perl 的 sdiff 中结果的“c”指令?

请您参考如下方法:

看看这个脚本。

sdiff.py@hungrysnake.net

http://hungrysnake.net/doc/software__sdiff_py.html

Perl 的 sdiff(Algorithm::Diff) 不要考虑“匹配率”, 但是python的sdiff.py想想看。 =)

我有 2 个文本文件。

$ cat text1.txt 
aaaaaa 
bbbbbb 
cccccc 
dddddd 
eeeeee 
ffffff 
 
$ cat text2.txt 
aaaaaa 
bbbbbb 
xxxxxxx 
ccccccy 
zzzzzzz 
eeeeee 
ffffff 

我通过 sdiff 命令或 Perl 的 sdiff(Algorithm::Diff) 获得并排差异。

$ sdiff text1.txt text2.txt 
aaaaaa          aaaaaa 
bbbbbb          bbbbbb 
cccccc      |   xxxxxxx 
dddddd      |   ccccccy 
            >   zzzzzzz 
eeeeee          eeeeee 
ffffff          ffffff 

Sdiff不要考虑“匹配率” =(

我通过 sdiff.py 得到的

$ sdiff.py text1.txt text2.txt 
--- text1.txt (utf-8) 
+++ text2.txt (utf-8) 
 1|aaaaaa             1|aaaaaa 
 2|bbbbbb             2|bbbbbb 
  |            >      3|xxxxxxx 
 3|cccccc      |      4|ccccccy 
 4|dddddd      <       | 
  |            >      5|zzzzzzz 
 5|eeeeee             6|eeeeee 
 6|ffffff             7|ffffff 
 
[     ]      |      +  
[ <-  ]     3|cccccc   
[  -> ]     4|ccccccy  

Sdiff.py 考虑“匹配率” =)

我想要 sdiff.py 的结果。不是吗?