如何在Python中匹配可变模式以去除歌词中的动态广告?
批量清除歌词中的可变模式广告
当然可以通过正则表达式匹配这个可变模式来清除广告,具体方案如下:
匹配逻辑
广告的固定结构是:See [歌手名] LiveGet tickets as low as $[数字],其中:
[歌手名]是由字母和空格组成的可变内容(如果有特殊字符比如连字符,可扩展匹配规则)[数字]是任意长度的阿拉伯数字
正则表达式写法
使用以下正则模式即可精准匹配这类广告:
See [A-Za-z\s]+ LiveGet tickets as low as \$\d+
[A-Za-z\s]+匹配歌手名(大小写字母+空格)\$转义匹配美元符号(避免正则中$的特殊含义)\d+匹配任意长度的数字
代码示例(Python)
import re def clean_lyric(lyric_text): ad_pattern = r'See [A-Za-z\s]+ LiveGet tickets as low as \$\d+' return re.sub(ad_pattern, '', lyric_text) # 测试示例 sample_lyric = 'lyric lyric See John Mayer LiveGet tickets as low as $53 lyric lyric' print(clean_lyric(sample_lyric)) # 输出:lyric lyric lyric lyric
扩展说明
如果歌手名包含连字符、点号等特殊字符,可将正则中的字符集调整为 [A-Za-z\s\-.]+,比如匹配See Bon Jovi LiveGet...这类情况。批量处理时,只需遍历所有歌词文本,调用上述函数即可完成批量清理。
内容的提问来源于stack exchange,提问作者Nova
相关产品推荐
相关产品推荐

