如何在句子列表中的单词和开括号之间创建 SPACE
How to create a SPACE between word and open bracket in list of sentences
在下面的列表中,实际上有两个骗子。但由于句子的第二个单词和 ( 之间 SPACE 的差异,将它们视为唯一的句子。
通过使用 Python - 正则表达式,如何在单词之间创建加法 space。 (示例:第一项)'United States(US)',应更改为 'United States (US)'(与第二项相同)
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)']
实际上,我正在尝试从列表中删除重复的句子,并认为这是首先使句子相似的方法之一。
请提出建议。
您可以搜索紧跟左括号的字母
>>> [re.sub(r'(\w)\(', r' (', i) for i in listx]
['United States (US)',
'United States (US)',
'New York (NY)',
'New York (NY)']
要删除重复项,您可以从这个生成器表达式
创建一个set
>>> set(re.sub(r'(\w)\(', r' (', i) for i in listx)
{'United States (US)', 'New York (NY)'}
你可以试试这个。你可以在这里使用re.sub
。
listx = ['United States(US)', 'United States (US)', 'New York(NY)', 'New York (NY)']
[re.sub(r'.(\(.*\))',r' ',i) for i in listx]
# ['United State (US)', 'United States (US)', 'New Yor (NY)', 'New York (NY)']
正则表达式模式解释:
.
匹配任意字符
(
组括号开始
\(
匹配 (
.*
贪心匹配
' '
将匹配组与 space 匹配组相匹配。
regex live demo
你可以做到
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)']
正则表达式将文本分成两组,一组在 () 之前,第二组在 () 之后,它正在修剪第一组右侧的 space。
那么你可以做
print(set(new_listx))
您将获得一组唯一值。
{'New York (NY)', 'United States (US)'}
在下面的列表中,实际上有两个骗子。但由于句子的第二个单词和 ( 之间 SPACE 的差异,将它们视为唯一的句子。
通过使用 Python - 正则表达式,如何在单词之间创建加法 space。 (示例:第一项)'United States(US)',应更改为 'United States (US)'(与第二项相同)
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)']
实际上,我正在尝试从列表中删除重复的句子,并认为这是首先使句子相似的方法之一。 请提出建议。
您可以搜索紧跟左括号的字母
>>> [re.sub(r'(\w)\(', r' (', i) for i in listx]
['United States (US)',
'United States (US)',
'New York (NY)',
'New York (NY)']
要删除重复项,您可以从这个生成器表达式
创建一个set
>>> set(re.sub(r'(\w)\(', r' (', i) for i in listx)
{'United States (US)', 'New York (NY)'}
你可以试试这个。你可以在这里使用re.sub
。
listx = ['United States(US)', 'United States (US)', 'New York(NY)', 'New York (NY)']
[re.sub(r'.(\(.*\))',r' ',i) for i in listx]
# ['United State (US)', 'United States (US)', 'New Yor (NY)', 'New York (NY)']
正则表达式模式解释:
.
匹配任意字符(
组括号开始\(
匹配(
.*
贪心匹配' '
将匹配组与 space 匹配组相匹配。regex live demo
你可以做到
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)']
正则表达式将文本分成两组,一组在 () 之前,第二组在 () 之后,它正在修剪第一组右侧的 space。
那么你可以做
print(set(new_listx))
您将获得一组唯一值。
{'New York (NY)', 'United States (US)'}