如何删除lis中元素的国家/地区

2024-10-04 03:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含不同公司名称的列表,我想从列表中删除所有国家的名称。我正在用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']

Tags: namein名称列表forexample公司国家
2条回答

您可以使用regular expressions

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']

这种方法将保留字符串的大小写。你知道吗

你很接近!保留您的逻辑,您可以找到这样的每个值:}

comps = ['XGLOW Japan', 'GOGO China', 'DALO germany', 'XTTTIndia']
comps = [c.lower() for c in comps]
countries = ['japan', 'china', 'germany', 'india'] #Didn't want to install pycountries
for p in countries:
    for c in comps:
        if p.lower() in c:
            print(c.replace(p.lower(),''))

列表格式为:

 [c.replace(p.lower(),'') for p in countries for c in comps if p.lower() in c]

我不知道pycountry是如何工作的,但是如果你在从我的国家列表转到pycountry的国家时遇到困难,请告诉我,我会帮助你。你知道吗

输出:

Out: ['xglow ', 'gogo ', 'dalo ', 'xttt']

相关问题 更多 >