列表中包含多个国家/地区的名称,但有些国家/地区名称中包含数字和/或括号。我想得到一个干净的清单,只有国家名称没有括号或数字部分。是否有一种很好的pythonic方法可以快速完成它?
示例:
输入:
country = ['India12','Bolivia (SA)', 'Australia17 (A)']
输出:
country = ['India','Bolivia', 'Australia']
注意:我目前在Python中使用类似C的代码,我遍历整个字符串并从我第一次遇到数字或括号的位置删除字符串部分。我想要一个更干净,更短的代码。
答案 0 :(得分:0)
您可以使用正则表达式。这是一种做同样的方法
import re
pattern = '[a-zA-Z]+'
country = ['India12','Bolivia (SA)', 'Australia17 (A)']
country_names = map(lambda x:re.search(pattern,x).group(),country)
答案 1 :(得分:0)
您可以使用此正则表达式:
import re
List = [re.findall("([a-zA-Z]+)[ \d]*[(]*.*[)]*.*", i)[0] for i in country]
输出:
>>> List
['India', 'Bolivia', 'Australia']