使用正则表达式删除字符串中不一致的首字母缩略词

2024-06-09 20:56:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想删除所有首字母缩略词,甚至那些书写不一致的首字母缩略词。例如,在下面的列表(text)中,一些首字母缩略词缺少开头或结尾括号,因此我也希望删除它们。我只能删除带有两个右括号的

如何调整当前的重新表达,使其不再只关注带两个括号的大写字符

import re

text = ['Spain (ES)', 'Netherlands (NL .', 'United States (USA.', 'Russia RU)']  

for string in text:
  cleaned_acronyms = re.sub(r'\([A-Z]*\)', '', string) #remove uppercase chars with ( ). 
  print(cleaned_acronyms)

#current output
>>> Spain 
>>> Netherlands (NL .
>>> United States (USA.
>>> Russia RU)

所需输出:

>>> Spain
>>> Netherlands
>>> United States
>>> Russia

Tags: textrestringrunl括号unitedstates
2条回答

你可能会相处得很好

 \(?\b[A-Z.]{2,3}\b.+

a demo on regex101.com

您可以将括号之间的大写字符与每边一个匹配,后跟行的其余部分

\s*(?:\([A-Z]{2,}|[A-Z]{2,}\)).*

Regex demo

比如说

import re

text = ['Spain (ES)', 'Netherlands (NL .', 'United States (USA.', 'Russia RU)']

for string in text:
    cleaned_acronyms = re.sub(r'\s*(?:\([A-Z]{2,}|[A-Z]{2,}\)).*', '', string)
    print(cleaned_acronyms)

输出

Spain
Netherlands
United States
Russia

相关问题 更多 >