Split a string into pieces of max length X - split only at spaces

后端 未结 1 1093
执念已碎
执念已碎 2020-12-31 04:40

I have a long string which I would like to break into pieces, of max X characters. BUT, only at a space (if some word in the string is longer than X chars, just put it into

1条回答
  •  不思量自难忘°
    2020-12-31 05:03

    Use the textwrap module (it will also break on hyphens):

    import textwrap
    lines = textwrap.wrap(text, width, break_long_words=False)
    

    If you want to code it yourself, this is how I would approach it: First, split the text into words. Start with the first word in a line and iterate the remaining words. If the next word fits on the current line, add it, otherwise finish the current line and use the word as the first word for the next line. Repeat until all the words are used up.

    Here's some code:

    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)
    

    0 讨论(0)
提交回复
热议问题