簡體   English   中英

如何根據來自不同列表的單詞匹配拆分字符串?

[英]How to split a string based on word match from different lists?

我有一個字符串。 現在,如果兩個不同列表中的任何內容匹配,我想將字符串拆分為多個部分。 我怎樣才能做到這一點? 我有什么。

dummy_word = "I have a HTML file"
dummy_type = ["HTML","JSON","XML"]
dummy_file_type = ["file","document","paper"]

for e in dummy_type:
    if e in dummy_word:
        type_found = e
        print("type ->" , e)
        dum = dummy_word.split(e)
        complete_dum = "".join(dum)

        for c in dummy_file_type:
            if c in complete_dum:
                then = complete_dum.split("c")
                print("file type ->",then)

在給定的場景中,我預期的 output 是["I have a", "HTML","file"]

這對我有用:

dummy_word = "I have a HTML file"
dummy_type = ["HTML","JSON","XML"]
dummy_file_type = ["file","document","paper"]

temp = ""
dummy_list = []
for word in dummy_word.split():
    if word in dummy_type or word in dummy_file_type:
        if temp:
            dummy_list.append(temp)
            print(temp, "delete")

        print(temp)
        new_word = word + " "
        dummy_list.append(new_word)
        temp = ""
    else:
        temp += word + " "
    print(temp)
print(dummy_list)

itertools.groupby()可以很好地處理這類任務。 如果單詞在單詞集中,則 key 將轉換為單個單詞,否則將轉換為False 這允許所有非特殊詞組合在一起,每個特殊詞成為自己的元素:

from itertools import groupby

dummy_word = "I have a HTML file"
dummy_type = ["HTML","JSON","XML"]
dummy_file_type = ["file","document","paper"]

words = set(dummy_type).union(dummy_file_type)

[" ".join(g) for k, g in 
 groupby(dummy_word.split(), key=lambda word: (word in words) and word)]

# ['I have a', 'HTML', 'file']

使用re的另一種方法:

>>> list(map(str.strip, re.sub("|".join(dummy_type + dummy_file_type), lambda x: "," + x.group(), dummy_word).split(',')))
['I have a', 'HTML', 'file']
>>> 

首先,通過使用join連接所有類型來形成正則表達式模式。 使用re.sub ,字符串被替換為以逗號開頭的標記,然后我們使用逗號分隔符拆分字符串。 map用於去除空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM