为了账号安全,请及时绑定邮箱和手机立即绑定

如何在句子列表中的单词和开括号之间创建空格

如何在句子列表中的单词和开括号之间创建空格

牛魔王的故事 2022-11-18 20:44:01
在下面的列表中,实际上有两个骗子。但是由于句子的第二个单词和 ( 之间的 SPACE 不同,它将它们视为独特的句子。通过使用 Python - 正则表达式,如何在单词之间创建附加空间。(示例:第一项)'United States(US)',应更改为'United States (US)'(与第 2 项相同)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)']实际上,我正在尝试从列表中删除重复的句子,并认为这是首先使句子相似的方法之一。请建议。
查看完整描述

3 回答

?
慕码人2483693

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)'}


查看完整回答
反对 回复 2022-11-18
?
慕虎7371278

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)'}


查看完整回答
反对 回复 2022-11-18
?
慕娘9325324

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'用空格匹配组子匹配组。

  • regex live demo


查看完整回答
反对 回复 2022-11-18
  • 3 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号