小编典典

如何从字符串列表中删除单词列表

python

我需要类似的内容,但不是该问题中的“ [br]”,而是需要搜索和删除的字符串列表。

希望我能说清楚。

我认为这是由于python中的字符串是不可变的。

我有一个需要从字符串列表中删除的干扰词列表。

如果使用列表推导,最终将一次又一次搜索相同的字符串。因此,仅删除“ of”而不删除“ the”。所以我的修改清单看起来像这样

places = ['New York', 'the New York City', 'at Moscow' and many more]

noise_words_list = ['of', 'the', 'in', 'for', 'at']

for place in places:
    stuff = [place.replace(w, "").strip() for w in noise_words_list if place.startswith(w)]

我想知道我在做什么错误。


阅读 215

收藏
2020-12-20

共1个答案

小编典典

这是我的目的。这使用正则表达式。

import re
pattern = re.compile("(of|the|in|for|at)\W", re.I)
phrases = ['of New York', 'of the New York']
map(lambda phrase: pattern.sub("", phrase),  phrases) # ['New York', 'New York']

Sans lambda

[pattern.sub("", phrase) for phrase in phrases]

更新资料

修复了gnibbler指出的错误(谢谢!):

pattern = re.compile("\\b(of|the|in|for|at)\\W", re.I)
phrases = ['of New York', 'of the New York', 'Spain has rain']
[pattern.sub("", phrase) for phrase in phrases] # ['New York', 'New York', 'Spain has rain']

@prabhu:以上更改避免了从“西班牙”中截取尾随“ in ”。为了验证是否对短语“西班牙有雨”运行两个版本的正则表达式。

2020-12-20