首页 > 解决方案 > 如何删除列表中元素的国家/地区

问题描述

我有一个包含不同公司名称的列表,我想从该列表的元素中删除所有国家/地区的名称。我正在使用 pycountry 导入国家列表。

comps = ['XGLOW Japan', 'GOGO China', 'DALO germany', 'XTTTIndia']


countries_list = []
for p in pycountry.countries:
    p = p.name.lower()
    countries_list.append(p)


remove_countries = [i for e in countries_list for i in comps if e in i]

这让我得到了包含国家名称的公司列表,但现在我不完全确定如何删除它们。

这是如何为单个元素执行此操作的示例。

example = 'DoNow China'.lower()

for p in pycountry.countries:
    if p.name.lower() in example:
        print(example.replace(p.name.lower(), '')) # gives me "donow"

期望的输出:

comps
['XGLOW', 'GOGO', 'DALO', 'XTTT']

标签: pythonpython-3.xlistfor-looplist-comprehension

解决方案


您可以使用正则表达式

import re
import pycountry

# create a pattern that will match any country in pycountry.countries
names = '|'.join([country.name for country in pycountry.countries])
pattern = re.compile(names, re.UNICODE | re.IGNORECASE)

companies = ['XGLOW Japan', 'GOGO China', 'DALO germany', 'XTTTIndia']

# apply sub for each company
result = [pattern.sub("", company).strip() for company in companies]
print(result)

输出

['XGLOW', 'GOGO', 'DALO', 'XTTT']

这种方法将保留字符串的大小写。


推荐阅读