繁体   English   中英

匹配字符串列表中 substring 列表中的 substring

[英]Matching a substring from a substring list in a list of strings

我有一个包含大约 10000 个条目的子字符串列表 -

substr_ls = ['N_COULT16_1 1', 'S_COULT2', 'XBG_F 1', 'FAIRWY_3', .....]

我有一个包含大约 100 个条目的字符串列表 -

main_str_ls = ['N_COULT16_1 1XF', 'S_COULT2_RT', 'XBG_F TX300 1', 'FAIRWY_34_AG', ....]

如您所见,子字符串不是来自main_str_ls的字符串的完美子字符串。 substring 中的字母、数字等序列必须与字符串中的序列匹配才能匹配。 例如 - 'XBG_F 1''XBG_F TX300 1'匹配,因为即使在'XBG_F''1'中间有一个'TX300' ,序列也是匹配的 我目前正在做的是使用这个function -

def is_subsequence(pattern, items_to_use):
    items_to_use = (x for x in items_to_use)
    return all(any(x == y for y in items_to_use) for x, _ in itertools.groupby(pattern))

通过迭代main_str_lsmain_str_ls的内容用作items_to_use )和substr_lssubstr_ls的内容用作pattern在混乱的字符串中查找 substring ,当我找到匹配项时,它会中断循环并执行一些操作。 像这样的东西-

for main_str in main_str_ls:
    main_str = main_str.strip()
    for substr in substr_ls:
        substr = substr.strip() 
        if is_subsequence(substr, main_str):
            **do stuff**

有没有更好的方法或pythonic方法来做到这一点?

您需要的内容与混乱的字符串问题之间的区别之一是他们担心允许重复。 我认为您不能直接使用该设计。 相反,请尝试此链接https://www.geeksforgeeks.org/given-two-strings-find-first-string-subsequence-second/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM