首页 > 解决方案 > 替换列表中的单词并附加到同一个列表

问题描述

我的列表:

city=['Venango Municiplaity', 'Waterford ship','New York']

预期结果:

city = ['Venango Municiplaity ', 'Waterford ship','New York','Venango','Waterford']

常用的词:

common_words = ['ship','municipality']

扫描我的列表中的所有项目并删除常用词并重新插入到同一个列表中,如预期结果所示。

我可以搜索包含常用词的项目,但不确定如何将其替换为空白并重新插入到我的列表中。

到目前为止我的代码:

for item in city:
    if(any(x in s.lower() for s in item.split(' ') for x in common_words)) :

标签: pythonlist

解决方案


我制作了一个按预期工作的小代码:

city=['Venango Municiplaity', 'Waterford ship','New York']
comwo = ['ship','municipality']
for i, c in enumerate(city):
    for ii in comwo:
        if ii in c:
            city.append(city[i].replace(ii,""))
print(city)

输出:

['Venango Municiplaity', 'Waterford ship', 'New York', 'Waterford ']

笔记:

您创建的列表包含不正确的拼写。
查看 listcity的第一个元素VenangoMuniciplaity和 common_words 的第二个元素municipality

如果你想在单行中做到这一点:

[city.append(city[i].replace(ii,"")) for ii in comwo for i, c in enumerate(city) if ii in c]

我使用列表推导追加到列表中city


编辑:

因此,如果您还想替换单词后面的空格(如果有的话),那么我制作了一个单独的代码:

city=['Village home', 'Villagehome','New York']
comwo = ['home']
for i, c in enumerate(city):
    for ii in comwo:
        if ii in c:
            city.append(city[i].replace(" "+ii,"")) if city[i].replace(" "+ii,"") != city[i] else city.append(city[i].replace(ii,""))
print(city)

输出:

['Village home', 'Villagehome', 'New York', 'Village', 'Village']

如果您也需要在单行中使用它:

[city.append(city[i].replace(" "+ii,"")) if city[i].replace(" "+ii,"") != city[i] else city.append(city[i].replace(ii,"")) for ii in comwo for i, c in enumerate(city) if ii in c]

推荐阅读