[英]How to add a new line before a capital letter?
我正在编写一段代码来从天才那里获取歌词。com。
我已经设法从网站上提取代码,但它以一种所有文本都在一行上的格式出现。
我使用正则表达式添加空格,但无法弄清楚如何添加新行。 到目前为止,这是我的代码:
text_container = re.sub(r"(\w)([A-Z])", r"\1 \2", text_container.text)
这会在大写字母之前添加一个空格,但我不知道如何添加新行。
它正在回归[Verse 1]Leaves are fallin' down on the beautiful ground I heard a story from the man in red He said, "The leaves are fallin' down
我想在命令行中的“他”之前添加一个新行。
任何帮助将不胜感激。 谢谢:)
如果genius.com 不以某种方式提供分隔符,那么很难找到一种方法来知道要查找的内容。
在您的示例中,我创建了一个搜索" [AZ]"
的正则表达式,它将找到“He...”。 但它也会找到句子以“I...”开头的所有地方。 有时新句子会以“I...”开头,但它可能会在实际上不应该有的地方换行。
TL;DR -genius.com 需要提供某种分隔符,以便我们知道何时应该有新行。
免责声明:除非我在您的描述/示例中遗漏了某些内容
快速浏览一下天才歌词页面的源代码表明您正在剥离所有 HTML 标记,否则这些标记将包含有关换行符等的信息。
您最好发布该代码(可能作为一个单独的问题)并询问如何正确提取不仅是文本节点,而且还有足够的<span>
结构以根据需要对其进行格式化。
环顾四周,我发现了一个 Python 必须从 Genius.com 提取歌词的 API,这是 PyPI 的链接:
https://lyricsgenius.readthedocs.io/en/master/
只需按照说明进行操作,它应该有您需要的内容,并提供有关该问题的更多信息,我可以提供更详细的回复
我不确定是否使用正则表达式。 试试这个方法:
text = lyrics
new_text = ''
for i, letter in enumerate(text):
if i and letter.isupper():
new_text += '\n'
new_text += letter
print(new_text)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.