簡體   English   中英

有什么方法可以根據字符串的長度動態插入換行符?

[英]Any way to dynamically insert linebreaks depending on the length of the string?

我從端點接收到一個長字符串中的一些數據,並且根據字符串的長度,我想在前端將其分成幾段。

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

"*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部分,在整個字符串中均勻地添加一個換行符。

不完全確定我在追求什么樣的邏輯

從內置模塊textwraptextwrap.fill函數。 最基本的用法是提供文本和寬度,例如

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

但它也有許多可以調整的選項,請參閱textwrap.TextWrapper文檔

一個好的起點可能是使用正則表達式

下面的方法假設每個部分都以模式“* 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM