繁体   English   中英

Python 正则表达式删除括号中的注释或数字

[英]Python Regex remove comments or numbers in brackets

我正在尝试使用正则表达式删除行号和注释,但它还不起作用:

import re
string = """(1) At what time.!? [asdf] School-
(2) bus. So late, already.!? [ghjk]"""

#res = re.sub(r"[\(\[].*?[\)\]]", "", string)

res = re.sub("(\d+) ","", res)
res = re.sub("[.*]","", res)
res = re.sub(r"-\s","", res)
res = re.sub(r"[^\w\säüöß]","", res)
res = re.sub("-\n","", res)
print(res.split())

所以我试图用我的#commented 行删除括号 () 和 [] 中的任何内容,但后来我被每行开头的空格卡住了。 然后我决定将其拆分并提出五种 re.sub 方法。

结果应该是这样的:

['At', 'what', 'time', 'Schoolbus', 'So', 'late', 'already']

我坚持没有被删除的行号,尽管它们在 () 中并且应该消失了。 然后导致我的 res.sub() 用于将单词与从校车到校车的“-”连接起来也不起作用。

您可以使用这个sub + findall解决方案:

import re

string = """(1) At what time.!? [asdf] School-
(2) bus. So late, already.!? [ghjk]"""

print (re.findall(r'\b\w+(?:-\w+)*', re.sub(r'(\([^)]*\)|\[[^]]*\]|-)\s*', '', string)))

Output:

['At', 'what', 'time', 'Schoolbus', 'So', 'late', 'already']

细节:

  • re.sub(r'(\([^)]*\)|\[[^]]*\]|-)\s*', '', string) :删除所有(...)[...]-后跟 0 个或多个空格的字符串
  • \b\w+ :匹配以单词边界开头的 1+ 个单词字符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM