gpt4 book ai didi

python - 遍历字符串列表,从每个字符串项中删除所有禁用词

转载 作者:行者123 更新时间:2023-12-05 04:25:05 25 4
gpt4 key购买 nike

我有以下列表:

dirtylist = ["lemons zested", "grated cheddar cheese", "carrots, thinly chopped"]

这是我要从列表中的每个字符串项中删除的单词列表:

bannedWord = ['grated', 'zested', 'thinly', 'chopped', ',']

我尝试生成的结果列表是这样的:

cleaner_list = ["lemons", "cheddar cheese", "carrots"]

到目前为止,我一直无法实现这一点。我的尝试如下:

import re

dirtylist = ["lemons zested", "grated cheddar cheese", "carrots, thinly chopped"]
cleaner_list = []

def RemoveBannedWords(ing):
pattern = re.compile("\\b(grated|zested|thinly|chopped)\\W", re.I)
return pattern.sub("", ing)

for ing in dirtylist:
cleaner_ing = RemoveBannedWords(ing)
cleaner_list.append(cleaner_ing)

print(cleaner_list)

返回:

['lemons zested', 'cheddar cheese', 'carrots, chopped']

我也试过:

import re

dirtylist = ["lemons zested", "grated cheddar cheese", "carrots, thinly chopped"]
cleaner_list = []

bannedWord = ['grated', 'zested', 'thinly', 'chopped']
re_banned_words = re.compile(r"\b(" + "|".join(bannedWord) + ")\\W", re.I)

def remove_words(ing):
global re_banned_words
return re_banned_words.sub("", ing)

for ing in dirtylist:
cleaner_ing = remove_words(ing)
cleaner_list.append(cleaner_ing)

print(cleaner_list)

返回:

['lemons zested', 'cheddar cheese', 'carrots, chopped']

此时我有点迷茫,不确定我哪里出错了。非常感谢任何帮助。

最佳答案

一些问题:

  • 正则表达式中的最后一个 \W 要求有一个字符跟在被禁止的词之后。因此,如果禁止词是输入字符串中的最后一个词,那将失败。你可以再次使用 \b ,就像你在正则表达式开始时所做的那样

  • 由于您还想替换逗号,因此需要将其添加为一个选项。确保不要将它放在同一个捕获组中,因为末尾的 \\b 要求逗号后跟一个字母数字字符。所以它应该作为一个选项放在正则表达式的最后(或开始)。

  • 您可能希望对生成的字符串调用 .strip() 以删除删除禁用词后剩余的所有空格。

所以:

def RemoveBannedWords(ing):
pattern = re.compile("\\b(grated|zested|thinly|chopped)\\b|,", re.I)
return pattern.sub("", ing).strip()

关于python - 遍历字符串列表,从每个字符串项中删除所有禁用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73345632/

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