迭代匹配子字符串,然后删除匹配项

2024-09-29 19:25:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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]])

但是我不知道如何反复迭代,特别是当匹配在一个字符串的中间时。请注意,我愿意更改匹配字符串的方法,或者在匹配完成后迭代字符串,如果有人知道更好的方法来执行这两种操作

如果需要更多细节,我也可以编辑问题


Tags: 字符串信息falsesizelen顺序matcharray
1条回答
网友
1楼 · 发布于 2024-09-29 19:25:15

对不起,我不是100%确定你真正需要什么

您尝试过字符串方法吗?:

.split()>;这将消除匹配项,并将匹配项之间的字符串部分作为列表返回

.find()>;这将返回匹配的位置,因此您可以迭代搜索匹配并消除它们

相关问题 更多 >

    热门问题