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

2024-06-07 07:51:51 发布

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

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

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())

因此,我试图删除括号()和[]中带有#注释行的任何内容,但随后我被困在每行开头的空白处。 然后我决定将其拆分,并提出了五种re.sub方法

结果应该是这样的:

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

虽然行号在()中并且应该消失,但我仍然无法删除它们。这会导致我的res.sub()将单词和“-”从校车连接到校车时也无法正常工作


Tags: importrestringsotimereswhatat
1条回答
网友
1楼 · 发布于 2024-06-07 07:51:51

您可以使用此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)))

输出:

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

详细信息:

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

相关问题 更多 >

    热门问题