Python中的SequenceMatcher对象是一个用于比较序列的工具类,它
▥Python
𝄐 0
pythonsearch和match,python re.match,python match方法,python数据对象,python code对象,python中match方法
Python中的SequenceMatcher对象是一个用于比较序列的工具类,它可以很方便地比较两个字符串、列表、元组等序列之间的相似度,并返回一个表示序列差异的详细报告。
该对象的构造函数如下:
class difflib.SequenceMatcher(isjunk=None, a='', b='', autojunk=True)
其中:
- isjunk 是一个可调用对象(callable),它接受单个字符作为输入并返回 True 或 False。默认为 None。
- a 和 b 是要比较的两个序列(字符串、列表、元组等)。
- autojunk 是一个布尔值,表示是否自动忽略不重要的字符,默认为 True。
创建 SequenceMatcher 对象后,你可以使用其实例方法 ratio() 返回两个序列之间的匹配程度,具体取值范围在 0 到 1 之间。此外,你还可以使用 get_opcodes() 方法获取一系列指令,这些指令描述了如何将一个序列转换成另一个序列。例如,('delete', 0, 1, 0, 0) 表示将序列 a 中位置从 0 开始到 1 结束的子序列删除,而 ('insert', 0, 'x', 0, 0) 表示在序列 b 的位置 0 插入字符 'x'。
下面是一个简单的例子:
python
from difflib import SequenceMatcher
a = 'hello, world!'
b = 'hello, python!'
s = SequenceMatcher(None, a, b) # 构造 SequenceMatcher 对象
print(s.ratio()) # 输出匹配度
for tag, i1, i2, j1, j2 in s.get_opcodes():
print('{:7} a[{}:{}] --> b[{}:{}] {!r:>8} --> {!r}'.format(tag, i1, i2, j1, j2, a[i1:i2], b[j1:j2]))
运行结果:
0.6363636363636364
equal a[0:6] --> b[0:6] 'hello,' --> 'hello,'
delete a[6:13] --> b[6:6] ' world!' --> ''
insert a[13:13] --> b[6:7] '' --> 'p'
replace a[13:14] --> b[7:8] '!' --> 'y'
equal a[14:15] --> b[8:9] ' ' --> ' '
insert a[15:15] --> b[9:10] '' --> 't'
insert a[15:15] --> b[10:11] '' --> 'h'
insert a[15:15] --> b[11:12] '' --> 'o'
insert a[15:15] --> b[12:13] '' --> 'n'
Python中的SequenceMatcher对象是一个用于比较序列的工具类,它可以很方便地比较两个字符串、列表、元组等序列之间的相似度,并返回一个表示序列差异的详细报告。
该对象的构造函数如下:
class difflib.SequenceMatcher(isjunk=None, a='', b='', autojunk=True)
其中:
- isjunk 是一个可调用对象(callable),它接受单个字符作为输入并返回 True 或 False。默认为 None。
- a 和 b 是要比较的两个序列(字符串、列表、元组等)。
- autojunk 是一个布尔值,表示是否自动忽略不重要的字符,默认为 True。
创建 SequenceMatcher 对象后,你可以使用其实例方法 ratio() 返回两个序列之间的匹配程度,具体取值范围在 0 到 1 之间。此外,你还可以使用 get_opcodes() 方法获取一系列指令,这些指令描述了如何将一个序列转换成另一个序列。例如,('delete', 0, 1, 0, 0) 表示将序列 a 中位置从 0 开始到 1 结束的子序列删除,而 ('insert', 0, 'x', 0, 0) 表示在序列 b 的位置 0 插入字符 'x'。
下面是一个简单的例子:
python
from difflib import SequenceMatcher
a = 'hello, world!'
b = 'hello, python!'
s = SequenceMatcher(None, a, b) # 构造 SequenceMatcher 对象
print(s.ratio()) # 输出匹配度
for tag, i1, i2, j1, j2 in s.get_opcodes():
print('{:7} a[{}:{}] --> b[{}:{}] {!r:>8} --> {!r}'.format(tag, i1, i2, j1, j2, a[i1:i2], b[j1:j2]))
运行结果:
0.6363636363636364
equal a[0:6] --> b[0:6] 'hello,' --> 'hello,'
delete a[6:13] --> b[6:6] ' world!' --> ''
insert a[13:13] --> b[6:7] '' --> 'p'
replace a[13:14] --> b[7:8] '!' --> 'y'
equal a[14:15] --> b[8:9] ' ' --> ' '
insert a[15:15] --> b[9:10] '' --> 't'
insert a[15:15] --> b[10:11] '' --> 'h'
insert a[15:15] --> b[11:12] '' --> 'o'
insert a[15:15] --> b[12:13] '' --> 'n'
本文地址:
/show-275508.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。