在[Python] 比较两个字符串:理解等于、不等于和关系操作中,我们探究了对比字符串的诸多方法。现今,我们更进一步审查较长篇幅的文本,并准确地找出其中的差异。本博文将引导您运用Python的difflib
模块分析和对比大量文字内容,成为处理复杂数据比对的不可或缺工具。
difflib
模块中的SequenceMatcher
类可用来对比两个字符串,并鉴定它们之间的相似度比率。
from difflib import SequenceMatcher
string1 = "The sun rises in the east\nA stitch in time saves nine\nAll that glitters is not gold"
string2 = "The sun sets in the west\nA stitch in time saves nine\nAll that shines is not gold\n"
s = SequenceMatcher(None, string1, string2)
similarity_ratio = s.ratio()
print(similarity_ratio) # 输出:0.9146341463414634
此代码片段展示了如何对比两个字符串并获得相似度比率,是迅速识别文本间细微差异的便捷方式。
difflib
模块中的Differ
类使我们能够逐行对比较大的文本文件。
from difflib import Differ
text1 = string1.split('\n')
text2 = string2.split('\n')
d = Differ()
diff = d.compare(text1, text2)
print('\n'.join(diff))
输出
- The sun rises in the east
? -- -
+ The sun sets in the west
? + +
A stitch in time saves nine
- All that glitters is not gold
? ^^ ^^ -
+ All that shines is not gold
? ^^ ^
在所给的代码片段中,difflib
模块的Differ
类被用来对比两个字符串序列text1
和text2
。代码的输出突出了这两个序列之间的差异,用特定符号标示每个差异的性质:
text1
中存在而在text2
中不存在的元素。text2
中存在而在text1
中不存在的元素。让我们分析所提供的输出:
text1
中但不在text2
中。"+"行显示"The sun sets in the west"在text2
中但不在text1
中。“?”行精确指出了已改变的字符。text1
和text2
中是相同的,因此开头没有任何符号。text1
中被"All that shines is not gold"在text2
中替换,并突出了具体的变化。difflib
模块是用来对比文字行序列的。difflib
模块自2.1版起在Python标准库中提供。difflib
模块的HtmlDiff
类生成HTML侧边对比表。Differ
这样的类提供选项来定制对比的执行方式和输出的生成方式。difflib.get_opcodes()
方法获取关于变化块的信息,这对于大型文本可能很有用。[Python] 通过多种示例深入了解位运算符 |
---|
[Python] 通过多种示例深入了解关系运算符 |
[Python] 解决 'zsh: command not found: python' 错误的方法 |
[Python] 通过多种示例深入了解赋值运算符 |
[Python] 通过多种示例深入了解算术运算符 |
CloneCoding
创新从一行代码开始!