Gre*_*reg 15 python newline word-wrap
使用Python的textwrap库时,我该怎么做呢:
short line,
long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
进入这个:
short line,
long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
我试过了:
w = textwrap.TextWrapper(width=90,break_long_words=False)
body = '\n'.join(w.wrap(body))
Run Code Online (Sandbox Code Playgroud)
但我得到:
short line, long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
(我的例子中的间距不完全)
Pet*_*ter 17
尝试
w = textwrap.TextWrapper(width=90,break_long_words=False,replace_whitespace=False)
Run Code Online (Sandbox Code Playgroud)
这似乎解决了我的问题
我从我在这里阅读的内容中解决了这个问题(我之前从未使用过textwrap)
小智 11
body = '\n'.join(['\n'.join(textwrap.wrap(line, 90,
break_long_words=False, replace_whitespace=False))
for line in body.splitlines() if line.strip() != ''])
Run Code Online (Sandbox Code Playgroud)
仅对长度超过 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"
Run Code Online (Sandbox Code Playgroud)
TextWrapper 并非设计用于处理已包含换行符的文本。
当您的文档已经包含换行符时,您可能需要执行两件事:
1) 保留旧的换行符,并且仅对长度超过限制的行进行换行。
您可以按如下方式对 TextWrapper 进行子类化:
class DocumentWrapper(textwrap.TextWrapper):
def wrap(self, text):
split_text = text.split('\n')
lines = [line for para in split_text for line in textwrap.TextWrapper.wrap(self, para)]
return lines
Run Code Online (Sandbox Code Playgroud)
然后以与 textwrap 相同的方式使用它:
d = DocumentWrapper(width=90)
wrapped_str = d.fill(original_str)
Run Code Online (Sandbox Code Playgroud)
给你:
short line,
long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
2)删除旧的换行符并包装所有内容。
original_str.replace('\n', '')
wrapped_str = textwrap.fill(original_str, width=90)
Run Code Online (Sandbox Code Playgroud)
给你
short line, long line xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
(TextWrapper 不会执行这些操作 - 它只是忽略现有的换行符,这会导致格式奇怪的结果)