有两个字符串:
str1 = "black_red_yellow"
str2 = "blue_red_green"
我可以使用哪个python库来检查这两个字符串是否有共同的子串"_red_"
?提前谢谢你。
答案 0 :(得分:4)
如果你不知道你正在搜索的实际字符串
,这样的东西应该有用import difflib
str1 = "black_red_yellow"
str2 = "blue_red_green"
difference = difflib.SequenceMatcher()
difference.set_seqs(str1, str2)
for match in difference.get_matching_blocks():
print str1[match[0]:match[0] + match[2]]
答案 1 :(得分:1)
如果你找不到任何其他东西,那至少有这个天真的实现:
str1 = "black_red_yellow"
str2 = "blue_red_green"
if len(str1) < len(str2):
min_str = str1
max_str = str2
else:
min_str = str2
max_str = str1
matches = []
min_len = len(min_str)
for b in xrange(min_len):
for e in xrange(min_len, b, -1):
chunk = min_str[b:e]
if chunk in max_str:
matches.append(chunk)
print max(matches, key=len)
打印_red_
答案 2 :(得分:0)
您可以使用difflib以这种方式比较字符串。但是,如果您知道要查找的字符串,则可以执行'_red_' in str1 and '_red_' in str2
。如果您不知道字符串,那么您是否寻找特定长度的匹配?例如。会'red'
匹配'blue'
因为它们都包含'e'
吗?检查任何匹配的最短,最简单的方法是
bool([a for a in str1 if a in str2])
修改或者,更有效率,
any(a for a in str1 if a in str2)
答案 3 :(得分:0)
测试是否存在公共子字符串,包括长度1:
如果设置(str1).intersection(set(str2)):打印“是的,我们可以!”