繁体   English   中英

如何在大写字母前添加新行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM