3 回答

TA贡献1860条经验 获得超9个赞
您可以搜索紧跟左括号的字母
>>> [re.sub(r'(\w)\(', r'\1 (', i) for i in listx]
['United States (US)',
'United States (US)',
'New York (NY)',
'New York (NY)']
要删除重复项,您可以set从此生成器表达式创建一个
>>> set(re.sub(r'(\w)\(', r'\1 (', i) for i in listx)
{'United States (US)', 'New York (NY)'}

TA贡献1802条经验 获得超4个赞
你可以做
new_listx = ["{} {}".format(re.match('(.*)(\(.*\))', i).group(1).rstrip() ,re.match('(.*)(\(.*\))', i).group(2)) for i in listx]
print(new_listx)
输出
['United States (US)', 'United States (US)', 'New York (NY)', 'New York (NY)']
正则表达式将文本分成两组,一组在 () 之前,第二组在 () 之后,它正在修剪第一组右侧的空间。
那么你可以做
print(set(new_listx))
您将获得一组独特的值。
{'New York (NY)', 'United States (US)'}

TA贡献1783条经验 获得超4个赞
你可以试试这个。你可以re.sub在这里使用。
listx = ['United States(US)', 'United States (US)', 'New York(NY)', 'New York (NY)']
[re.sub(r'.(\(.*\))',r' \1',i) for i in listx]
# ['United State (US)', 'United States (US)', 'New Yor (NY)', 'New York (NY)']
正则表达式模式解释:
.
匹配任何字符(
组括号的开始\(
匹配(
.*
贪婪地匹配。' \1'
用空格匹配组子匹配组。
添加回答
举报