在我的项目中,我有一堆从文件中读入的字符串.当在命令控制台中打印时,它们中的大多数长度超过80个字符,并环绕在一起,看起来很难看.
我想让Python读取字符串,然后测试其长度是否超过75个字符.如果是,则将字符串拆分为多个字符串,然后在新行上逐个打印.
我try 过修改类似的代码,在设定长度后截断字符串,但只是将字符串丢弃,而不是将其放入新行.
我可以使用哪些方法来实现这一点?
在我的项目中,我有一堆从文件中读入的字符串.当在命令控制台中打印时,它们中的大多数长度超过80个字符,并环绕在一起,看起来很难看.
我想让Python读取字符串,然后测试其长度是否超过75个字符.如果是,则将字符串拆分为多个字符串,然后在新行上逐个打印.
我try 过修改类似的代码,在设定长度后截断字符串,但只是将字符串丢弃,而不是将其放入新行.
我可以使用哪些方法来实现这一点?
你可以使用textwrap
个模块:
>>> import textwrap
>>> strs = "In my project, I have a bunch of strings that are read in from a file. Most of them, when printed in the command console, exceed 80 characters in length and wrap around, looking ugly."
>>> print(textwrap.fill(strs, 20))
In my project, I
have a bunch of
strings that are
read in from a file.
Most of them, when
printed in the
command console,
exceed 80 characters
in length and wrap
around, looking
ugly.
help对textwrap.fill
:
>>> textwrap.fill?
Definition: textwrap.fill(text, width=70, **kwargs)
Docstring:
Fill a single paragraph of text, returning a new string.
Reformat the single paragraph in 'text' to fit in lines of no more
than 'width' columns, and return a new string containing the entire
wrapped paragraph. As with wrap(), tabs are expanded and other
whitespace characters converted to space. See TextWrapper class for
available keyword args to customize wrapping behaviour.
如果不想将一行合并为另一行,请使用regex
:
import re
strs = """In my project, I have a bunch of strings that are.
Read in from a file.
Most of them, when printed in the command console, exceed 80.
Characters in length and wrap around, looking ugly."""
print('\n'.join(line.strip() for line in re.findall(r'.{1,40}(?:\s+|$)', strs)))
# Reading a single line at once:
for x in strs.splitlines():
print '\n'.join(line.strip() for line in re.findall(r'.{1,40}(?:\s+|$)', x))
output:
In my project, I have a bunch of strings
that are.
Read in from a file.
Most of them, when printed in the
command console, exceed 80.
Characters in length and wrap around,
looking ugly.