2015-08-20 19 views
5

Uzun X karakterlerinden oluşan parçalara ayırmak istediğim uzun bir dizim var. AMA, sadece bir alanda (eğer dizideki bir kelime X karakterinden daha uzunsa, sadece kendi parçasına yerleştir).Bir dizeyi maksimum uzunluk X parçalarına ayırın - yalnızca boşluklara bölünür

Hatta bunu nasıl başlayacağınızı bilmiyorsanız

... Pythonically

sahte kod:

declare a list 
while still some string left: 
    take the fist X chars of the string 
    find the last space in that 
    write everything before the space to a new list entry 
    delete everything to the left of the space 

O kadar kod önce bana yardımcı olabilecek bazı piton modülü (orada Ben pprint yapamıyorum)?

+4

Sadece son piton bir [textwrap] (https://docs.python.org/3.5/ içerdiğini tespit kütüphane/textwrap.html # module-textwrap) modülü;) – swenzel

cevap

13

Buna nasıl yaklaşacağım: Önce metni kelimelere ayırın. Bir satırdaki ilk kelimeyle başlayın ve kalan kelimeleri tekrarlayın. Bir sonraki kelime geçerli hatta sığarsa, ekleyin, aksi halde mevcut satırı tamamlayın ve kelimeyi bir sonraki satırın ilk kelimesi olarak kullanın. Tüm kelimeler kullanılıncaya kadar tekrarlayın.

text = "hello, this is some text to break up, with some reeeeeeeeeaaaaaaally long words." 
n = 16 

words = iter(text.split()) 
lines, current = [], next(words) 
for word in words: 
    if len(current) + 1 + len(word) > n: 
     lines.append(current) 
     current = word 
    else: 
     current += " " + word 
lines.append(current) 

Güncelleme:

İşte bazı kod textwrap: @swenzel tarafından Açıklamalarda belirttiği gibi, aslında bunun için bir modül var. Bu kod yukarıdaki aynı sonucu üretecektir (ve aynı zamanda tire kıracak):

import textwrap 
lines = textwrap.wrap(text, n, break_long_words=False) 
+0

Bu benimkinden daha iyi bir algoritmaya benziyor (+1) – Mawg

İlgili konular