Python textwrap 库 - 如何保留换行符?

28 投票
9 回答
19071 浏览
提问于 2025-04-15 13:05

在使用Python的textwrap库时,我该如何把这个:

short line,

long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

变成这个:

short line,

long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx

我试过:

w = textwrap.TextWrapper(width=90,break_long_words=False)
body = '\n'.join(w.wrap(body))

但是我得到的是:

short line, long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

(我举的例子中的间距并不完全准确)

9 个回答

6

怎么样只对超过90个字符的行进行换行呢?

new_body = ""
lines = body.split("\n")

for line in lines:
    if len(line) > 90:
        w = textwrap.TextWrapper(width=90, break_long_words=False)
        line = '\n'.join(w.wrap(line))

    new_body += line + "\n"
24

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用某个特定的功能时,发现它没有按照预期工作,或者出现了错误信息。这时候,我们就需要去查找相关的资料,看看有没有人遇到过类似的问题,或者有没有解决方案。

在StackOverflow这样的社区里,很多程序员会分享他们的经验和解决方案。你可以在这里找到很多有用的信息,帮助你解决问题。记得在提问时,尽量描述清楚你遇到的情况,这样别人才能更好地帮助你。

总之,遇到问题时不要慌张,先查找资料,看看有没有人遇到过类似的情况,或者直接向社区求助,通常都会找到解决办法。

body = '\n'.join(['\n'.join(textwrap.wrap(line, 90,
                 break_long_words=False, replace_whitespace=False))
                 for line in body.splitlines() if line.strip() != ''])
35

尝试一下

w = textwrap.TextWrapper(width=90,break_long_words=False,replace_whitespace=False)

这似乎解决了我的问题

我是根据我在 这里 看到的内容弄明白的(我之前从来没有用过textwrap)

撰写回答