我试图从python中的字符串中删除所有标点符号和括号或括号内的任何内容。这样做的目的是在查询musicbrainzwebservice时对歌曲名称进行某种程度的规范化,以获得更好的结果。在
示例输入:T.N.T. (live) [nyc]
预期输出:T N T
我可以在两个正则表达式中完成,但我想看看是否可以在一个正则表达式中完成。我试过以下方法,但没用。。。在
>>> re.sub(r'\[.*?\]|\(.*?\)|\W+', ' ', 'T.N.T. (live) [nyc]')
'T N T live nyc '
如果我将\W+
拆分成它自己的正则表达式,然后再运行它,我就得到了预期的结果,因此在前两个选项可以处理它们之前,\W+
似乎正在吃掉括号和parens。在
正确的是},并应设置:
\W+
正在吃掉大括号,请删除{\W+
会吃掉方括号,因为它“有一个运行”:它从第二个T之后的点开始匹配,直到并包括第一个括号:. (
。之后,它将重新开始从一个括号到另一个括号的匹配:) [
。在这里有一个小解析器,它做的事情和我在练习中写的一样。如果规范化的工作变得更加复杂,那么您可以开始研究基于解析器的解决方案。这就像一个小解析器。在
相关问题 更多 >
编程相关推荐