根据字符串长度动态插入换行符的任何方法?

2024-05-16 21:11:49 发布

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

我从端点接收到一个长字符串中的一些数据,根据字符串的长度,我希望在前端将其拆分为段落

一个字符串可能如下所示:

"*1* No princípio Deus criou os céus e a terra.*2* Era a terra sem forma e vazia; trevas cobriam a face do abismo, e o Espírito de Deus se movia sobre a face das águas.*3* Disse Deus: \"Haja luz\", e houve luz.*4* Deus viu que a luz era boa, e separou a luz das trevas.*5* Deus chamou à luz dia, e às trevas chamou noite. Passaram-se a tarde e a manhã; esse foi o primeiro dia.*6* Depois disse Deus: \"Haja entre as águas um firmamento que separe águas de águas\".*7* Então Deus fez o firmamento e separou as águas que estavam embaixo do firmamento das que estavam por cima. E assim foi.*8* Ao firmamento Deus chamou céu. Passaram-se a tarde e a manhã; esse foi o segundo dia.*9* E disse Deus: \"Ajuntem-se num só lugar as águas que estão debaixo do céu, e apareça a parte seca\". E assim foi.*10* À parte seca Deus chamou terra, e chamou mares ao conjunto das águas. E Deus viu que ficou bom.*11* Então disse Deus: \"Cubra-se a terra de vegetação: plantas que dêem sementes e árvores cujos frutos produzam sementes de acordo com as suas espécies\". E assim foi.*12* A terra fez brotar a vegetação: plantas que dão sementes de acordo com as suas espécies, e árvores cujos frutos produzem sementes de acordo com as suas espécies. E Deus viu que ficou bom.*13* Passaram-se a tarde e a manhã; esse foi o terceiro dia.*14* Disse Deus: \"Haja luminares no firmamento do céu para separar o dia da noite. Sirvam eles de sinais para marcar estações, dias e anos,*15* e sirvam de luminares no firmamento do céu para iluminar a terra\". E assim foi.*16* Deus fez os dois grandes luminares: o maior para governar o dia e o menor para governar a noite; fez também as estrelas.*17* Deus os colocou no firmamento do céu para iluminar a terra,*18* governar o dia e a noite, e separar a luz das trevas. E Deus viu que ficou bom.*19* Passaram-se a tarde e a manhã; esse foi o quarto dia.*20* Disse também Deus: \"Encham-se as águas de seres vivos, e sobre a terra voem aves sob o firmamento do céu\".*21* Assim Deus criou os grandes animais aquáticos e os demais seres vivos que povoam as águas, de acordo com as suas espécies; e todas as aves, de acordo com as suas espécies. E Deus viu que ficou bom.*22* Então Deus os abençoou, dizendo: \"Sejam férteis e multipliquem-se! Encham as águas dos mares! E multipliquem-se as aves na terra\".*23* Passaram-se a tarde e a manhã; esse foi o quinto dia.*24* E disse Deus: \"Produza a terra seres vivos de acordo com as suas espécies: rebanhos domésticos, animais selvagens e os demais seres vivos da terra, cada um de acordo com a sua espécie\". E assim foi.*25* Deus fez os animais selvagens de acordo com as suas espécies, os rebanhos domésticos de acordo com as suas espécies, e os demais seres vivos da terra de acordo com as suas espécies. E Deus viu que ficou bom.*26* Então disse Deus: \"Façamos o homem à nossa imagem, conforme a nossa semelhança. Domine ele sobre os peixes do mar, sobre as aves do céu, sobre os animais grandes de toda a terra e sobre todos os pequenos animais que se movem rente ao chão\".*27* Criou Deus o homem à sua imagem, à imagem de Deus o criou; homem e mulher os criou.*28* Deus os abençoou, e lhes disse: \"Sejam férteis e multipliquem-se! Encham e subjuguem a terra! Dominem sobre os peixes do mar, sobre as aves do céu e sobre todos os animais que se movem pela terra\".*29* Disse Deus: \"Eis que lhes dou todas as plantas que nascem em toda a terra e produzem sementes, e todas as árvores que dão frutos com sementes. Elas servirão de alimento para vocês.*30* E dou todos os vegetais como alimento a tudo o que tem em si fôlego de vida: a todos os grandes animais da terra, a todas as aves do céu e a todas as criaturas que se movem rente ao chão\". E assim foi.*31* E Deus viu tudo o que havia feito, e tudo havia ficado muito bom. Passaram-se a tarde e a manhã; esse foi o sexto dia.",

而另一个字符串要短得多:

"*1* Assim foram concluídos os céus e a terra, e tudo o que neles há.*2* No sétimo dia Deus já havia concluído a obra que realizara, e nesse dia descansou.

显然,第二个字符串不需要任何拆分,因为它只有两个“部分”(注意*1**2*,但是第一个从*1*一直到*29*

不太确定我想要什么样的逻辑,但可能是类似于

对于每个*10*th节,在整个字符串上均匀添加一个换行符


Tags: comosasdedoqueterraesp
2条回答

不太确定我要的是什么样的逻辑

从内置模块textwrap获取^{}函数处的赃物。例如,最基本的用法是提供文本和宽度

import textwrap
text = "Some very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long text"
text_with_breaks = textwrap.fill(text, 50)
print(text_with_breaks)

输出

Some very very very very very very very very very
very very very very very very very very very very
very very very very very very very very very very
very very very long text

但它也有许多选项,您可以对其进行调整,请参见^{} docs

一个好的起点可能是使用regular expressions

下面的方法假设每个节都以模式“*integer*”开头,并且每个节不包含此模式作为内容

import re


# your long string
string = ""

# regular expression
pattern = "(\*\d+\* .+?)(?=\*\d+\*|$)"

# using the regular expression to find all sections
sections = re.findall(pattern, string)

# now you can loop over all sections like
for section in sections:
    pass

# and let the fronted handle the display

相关问题 更多 >