[英]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.