gpt4 book ai didi

python - 如果 re 模块中有子字符串,如何提取所有原始化合物?

转载 作者:行者123 更新时间:2023-12-04 07:32:18 26 4
gpt4 key购买 nike

string= "'Patriots', 'corona2020','COVID-19','coronavirus','2020TRUmp','Support2020Trump','whitehouse','Trump2020','QAnon','QAnon2020',TrumpQanon"
badwords = ['qanon', 'trump', 'corona', 'COVID']如果 string 中的化合物包含 badwords 的子字符串,则必须从字符串中删除该化合物。例如,我们有 COVIDbadwords ,然后 COVID-19应该在 string 中删除.
我尝试使用 re像这样的模块,但失败了:
import re

badwords = ['qanon', 'trump', 'corona', 'COVID']
string = "'Patriots', 'corona2020','COVID-19','coronavirus','2020TRUmp','Support2020Trump',Trump2020,'QAnon'"
for each in badwords:
print(re.findall ('[0-9a-zA-Z]+'+each,string,flags=re.IGNORECASE)+\
re.findall (each+'[0-9a-zA-Z]+',string,flags=re.IGNORECASE))
我想要的:一个新字符串 "'Patriots','whitehouse'"应该返回。

最佳答案

首先,创建一个匹配 badwords 中任何单词的正则表达式。列表:

import re
rex_string = "(" + "|".join(badwords) + ")" # (qanon|trump|corona|COVID)

rex = re.compile(rex_string, re.IGNORECASE)
然后, split()您的 string通过逗号得到每个元素包含一个复合词的列表。
接下来,遍历此列表,如果正则表达式与字符串不匹配,请将其添加到新的单词列表中。
最后,我们可以使用 str.join() 将新的单词列表连接成一个字符串。
words_list = string.split(",")
new_list = []

for word in words_list:
if rex.search(word) is None:
# Didn't find a match
new_list.append(word)

new_string = ",".join(new_list)
这给了我们字符串:
"'Patriots','whitehouse'"
如果您愿意,可以将循环编写为单行:
new_list = [word for word in string.split(",") if rex.search(word) is None]
或者,
new_string = ",".join(word for word in string.split(",") if rex.search(word) is None)

关于python - 如果 re 模块中有子字符串,如何提取所有原始化合物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67886028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com