[英]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.