将字符串拆分为最大长度为X的片段 - 仅在空格处分割

时间:2015-08-20 15:12:00

标签: python algorithm python-3.x text

我有一个很长的字符串,我想分成几行,最多X个字符。但是,只在一个空格处(如果字符串中的某些字长于X字符,只需将其放入自己的部分中)。

我甚至不知道如何开始这样做......以Python的方式

伪代码:

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

在我编写代码之前,是否有一些python模块可以帮助我(我不认为pprint可以)?

1 个答案:

答案 0 :(得分:20)

使用textwrap模块(它也会在连字符上断开):

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

如果您想自己编写代码,我就会采用这种方法:首先,将文本拆分为单词。从一行中的第一个单词开始,并迭代剩余的单词。如果下一个单词适合当前行,则添加它,否则完成当前行并将该单词用作下一行的第一个单词。重复,直到所有单词都用完为止。

这里有一些代码:

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)