如何在字符串列表中搜索序列

2024-10-03 19:24:47 发布

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

我有一个字符串列表,我想检查相同的连续序列是否在另一个字符串列表中

我想找到这个序列:

['dissi', 'io', 'o', 'musa']

在此列表中:

[['sostanza', 'di', 'cieli', 'ed', 'astri', 'cercai', 'per', 'oceani', 'e', 'mari.', 'di', 'donarmi', 'il', 'diluvio', 'ti', 'dissi', 'io,', 'o', 'musa,', 'scorgendo', 'il', 'destino.'], 
['o', 'zeus', 'che', 'infiniti', 'addurre', 'volle,', 'principiando', 'con', 'stormi', 'arditi', 'fulmini', 'di', 'ira', 'molto', 'funesta', 'laddove', 'si', 'alzasse', 'eccessivamente', 'il', 'volare', 'negato', "all'uomo."], 
['', 'imperterrita', 'irrefrenabile', 'poiché', 'memore', 'di', 'ciò,', 'da', 'qualunque', 'principio,', 'ad', 'ogni', 'costo,', 'dea', 'figlia', 'di', 'zeus,', 'narrane', 'cagione', 'e', 'spirito.', '']]

输出应如下所示:

['dissi', 'io,', 'o', 'musa,']

然后,大列表中的标点应该出现在输出中。 我怎么能这样做


Tags: 字符串io列表序列ilzeusperdi
1条回答
网友
1楼 · 发布于 2024-10-03 19:24:47

这就是我能想到的快速解决方案。注意:即使单词在不同的子列表中,也会给出一个输出

ref = ['dissi', 'io', 'o', 'musa']
mainls = [['sostanza', 'di', 'cieli', 'ed', 'astri', 'cercai', 'per', 'oceani', 'e', 'mari.', 'di', 'donarmi', 'il', 'diluvio', 'ti', 'dissi', 'io,', 'o', 'musa,', 'scorgendo', 'il', 'destino.'],
['o', 'zeus', 'che', 'infiniti', 'addurre', 'volle,', 'principiando', 'con', 'stormi', 'arditi', 'fulmini', 'di', 'ira', 'molto', 'funesta', 'laddove', 'si', 'alzasse', 'eccessivamente', 'il', 'volare', 'negato', "all'uomo."],
['', 'imperterrita', 'irrefrenabile', 'poiché', 'memore', 'di', 'ciò,', 'da', 'qualunque', 'principio,', 'ad', 'ogni', 'costo,', 'dea', 'figlia', 'di', 'zeus,', 'narrane', 'cagione', 'e', 'spirito.', '']]


def find_index(word, search_ls):
    if word in search_ls:
        return search_ls.index(word)


clean_mainls = []

for sub_ls in mainls:
    temp_ls = []
    for word in sub_ls:
        temp_ls.append(word.strip(','))
    clean_mainls.append(temp_ls)
    del temp_ls

output_list = []

for sub_list in clean_mainls:
    for wrd in ref:
        idx = find_index(wrd, sub_list)
        if idx is not None:
            ls_idx = clean_mainls.index(sub_list)
            output_list.append(mainls[ls_idx][idx])

print(output_list)

# Output: ['dissi', 'io,', 'o', 'musa,', 'o']

相关问题 更多 >