在下面的列表中,实际上有两个哑弹。但由于第二句与第二句在空间上的差异,将其视为独特的句子。
通过使用Python正则表达式,如何在单词之间创建加法空间。(例如:第一项)“美国(美国)”,应改为“美国(美国)”(与第二项相同)
listx =
['United States(US)',
'United States (US)',
'New York(NY)',
'New York (NY)']预期输出列表为
['United States (US)',
'United States (US)',
'New York (NY)',
'New York (NY)']实际上,我正在尝试从清单中删除重复的句子,并且认为这是一种先使句子相似的方法。请建议一下。
发布于 2020-05-14 16:57:13
您可以搜索紧跟在括号后面的字母。
>>> [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)'}发布于 2020-05-14 17:01:35
你可以试试这个。您可以在这里使用。
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)']Regex模式解释:
.以匹配组bracket\(的任何character(开始匹配(.* match greedily.' \1'子匹配组与匹配的group.regex live demo空间
发布于 2020-05-14 17:03:49
你能做到的
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)'}https://stackoverflow.com/questions/61802934
复制相似问题