用正则表达式清理歌词

2024-05-15 02:21:40 发布

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

我从Genius为一个项目(Python)下载了很多歌词,现在需要清理它们。举个例子,这里有一段歌词:

'lyric = [Letra de "La Jeepeta"]\n\n[Intro: Nio García & Juanka El Problematik]\nNio García\nBrray\nJuanka\nLas Air Force son brand new\nLas moña\' verde\' como mi Sea-Doo\nUnas prendas que me\u2005cambian\u2005la actitú\'\nEsta noche\u2005no queremo\' revolú\n\n[Coro: Nio García & Juanka El Problematik]\nArrebata\'o, dando vuelta en\u2005la jeepeta (Dando vuelta en la jeepeta)\nAl la\'o mío tengo una rubia que tiene grande\' las

在歌词中,我想:

  1. 删除方括号和它们之间的所有内容。我通过以下方式做到这一点:
re.sub(r"[\[].*?[\]]", "", lyric)
  1. 删除换行符\n。我通过以下方式做到这一点:
re.sub(r"[\n]"," ",lyric)

但是我遇到了一个问题,如果歌词中没有\n,我会得到一个错误

  1. 删除\u。我不知道为什么这会出现在一些歌曲中
re.sub(r"\[\u]", " ", lyric)

但是,我得到以下错误:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 15-16: truncated \uXXXX escape

那么首先你能帮我解决我遇到的错误吗?第二,有没有一种方法可以将多个正则表达式放在一个命令中,这样就不需要在多个命令中执行了

提前感谢!:-)


Tags: re错误歌词elenquelyricnio
1条回答
网友
1楼 · 发布于 2024-05-15 02:21:40

您在输出中看到的\u2005是一个U+2005 FOUR-PER-EM SPACE (Zs)字符

您可以考虑用一个单独的空间代替ReXEP来代替所有的Unicode空白:

re.sub("\s+", " ", lyric, flags=re.UNICODE)

相关问题 更多 >

    热门问题