我有一个N个字符串的列表,其中包含我想要匹配的模式。我正在使用difflib
库执行此操作:
from difflib import SequenceMatcher
def longestSubstring(str1,str2):
seqMatch = SequenceMatcher(None,str1,str2)
match = seqMatch.find_longest_match(0, len(str1), 0, len(str2))
return match
a = 'grandfather's clock'
b = 'father'
longestSubstring(a, b).size # returns 6 which is the length of 'father'
我想为我可能拥有的所有字符串存储此信息(N的顺序为100s,而不是1000s或更高,字符串长度最大为100)
一旦信息被存储,我需要按照最长子字符串匹配的顺序删除这些对,然后迭代地对字符串中未匹配的其余部分进行另一次匹配
例如
str1 = 'abcdefghijk'
str2 = 'bcde'
str3 = 'fghz'
result = {'a' : False,
'bcd': True,
'fgh': True,
'ijk': False,
'z' : False}
我目前的计划是将每一对的match.size
值作为条目存储在长度等于字符串数的方形numpy.array
对象中。例外情况是if i==j; array[i][j] = 0
,因此字符串本身不匹配
例如
str1 = 'abcdefghijk'
str2 = 'bcde'
str3 = 'fghz'
matches = np.array([[0, 4, 3],
[4, 0, 0],
[3, 0, 0]])
但是我不知道如何反复迭代,特别是当匹配在一个字符串的中间时。请注意,我愿意更改匹配字符串的方法,或者在匹配完成后迭代字符串,如果有人知道更好的方法来执行这两种操作
如果需要更多细节,我也可以编辑问题
对不起,我不是100%确定你真正需要什么
您尝试过字符串方法吗?:
.split()>;这将消除匹配项,并将匹配项之间的字符串部分作为列表返回
.find()>;这将返回匹配的位置,因此您可以迭代搜索匹配并消除它们
相关问题 更多 >
编程相关推荐