所以我有这段代码来过滤输入字符串中的单词:

RemoveWords = "\\b(official|videoclip|clip|video|mix|ft|feat|music|HQ|version|HD|original|extended|unextended|vs|preview|meets|anthem|12\"|4k|audio|rmx|lyrics|lyric|international|1080p)\\b"
result = re.compile(RemoveWords, re.I)


这是一种解决方法,因为我刚开始使用Python。
现在,理想的情况是:


  如果括号中包含“ remix”或“ edit”一词:请勿删除文本
  在原谅内。否则,请删除所有内容,包括
  括号本身。


例如,如果标题看起来像这样:


  交流/直流-T.N.T. (摘自River Plate现场直播)


括号之间的所有内容都必须删除。

但是,如果标题看起来像这样:


  交流/直流-T.N.T. (Dj示例混音)


不要删除括号之间的文本,因为其中包含单词remix。

我知道如何删除与正则表达式匹配的单词,但是我不知道如何在括号之间保持正则表达式,或者如果不包含给定单词,则如何删除之间的所有内容。

我已经尝试过查找正则表达式,以了解如何在括号之间进行限制,但是由于我对Regex还是陌生的,所以我无法弄清楚。

最佳答案

使用re.finditer()re.search()函数的解决方案:

import re
titles = 'AC/DC - T.N.T. (from Live at River Plate) AC/DC - T.N.T. (Dj Example Remix)'
result = titles

for m in re.finditer(r'\([^()]+\)', titles):
    if not re.search(r'\b(remix|edit)\b', m.group(), re.I):
        result = re.sub(re.escape(m.group()), '', result)

print(result)


输出:

AC/DC - T.N.T.  AC/DC - T.N.T. (Dj Example Remix)

关于python - 如何从括号中删除所有内容,除非其中包含给定的关键字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45772872/

10-11 22:43
查看更多