使用Python分成多行来限制字符串宽度

时间:2013-05-23 20:58:12

标签: python string formatting

我正在使用python生成用于编程的测试文件。在这个文件中,我有几个自动生成的注释。问题是,其中一些注释可能很长,如果一行太长,读取文件的软件会产生错误。

我正在寻找的是用'\ n#'打破字符串的方法。这些换行符的位置应限制任何一行的宽度小于某个宽度。以下是我想要做的一个例子。我需要从“long_line”生成“broken_line”的代码。

long_line = "# alpha || bravo || charlie || delta || echo are the first 5 elements of NATO"

broken_line = "# alpha || bravo || charlie ||\n# delta || echo are the first \n# 5 elements of NATO"


>>>print long_line
# alpha || bravo || charlie || delta || echo are the first 5 elements of NATO

>>>print broken_line
# alpha || bravo || charlie ||
# delta || echo are the first
# 5 elements of NATO

2 个答案:

答案 0 :(得分:6)

使用textwrap module将线条换行到最大宽度。您可以将'# '指定为缩进,以正确地为您的行添加前缀:

>>> import textwrap
>>> long_line = "# alpha || bravo || charlie || delta || echo are the first 5 elements of NATO"
>>> textwrap.fill(long_line, 30, subsequent_indent='# ')
'# alpha || bravo || charlie ||\n# delta || echo are the first\n# 5 elements of NATO'
>>> print textwrap.fill(long_line, 30, subsequent_indent='# ')
# alpha || bravo || charlie ||
# delta || echo are the first
# 5 elements of NATO

该模块非常灵活,请阅读文档以查看您想要旋转的旋钮以获得完美结果。

答案 1 :(得分:1)

一种方法是使用textwrap-module

In [6]: import textwrap

In [7]: long_line = "# alpha || bravo || charlie || delta || echo are the first 5 elements of NATO"

In [8]: textwrap.wrap(long_line, width=50)
Out[8]: 
['# alpha || bravo || charlie || delta || echo are',
 'the first 5 elements of NATO']