大多数Pythonic方式连接缩进,包裹的段落?

时间:2014-03-07 04:03:06

标签: python

似乎会有一种Pythonic方法循环几段包装和缩进文本,将它们转换为无缩限文本。也就是说,循环遍历以下示例输入:

    abc def ghi
    jkl mno pqr

    stu vwx yz

把它变成:

abc def ghi
jkl mno pqr

stu vwx yz

我想出的最好成绩如下:

for line in text:
    if line.strip() == '':
        string += '\n\n'
    else:
        string += line[3:]

哪个有效,但看起来非常笨拙。有没有办法完全避免if条款?我尝试使用textwrap.dedent(),但它似乎消除了段落中断并在换行符处一起运行。

1 个答案:

答案 0 :(得分:1)

如果文本是数组:

 "\n".join(line.strip() for line in text)

如果它在一个字符串中:

 "\n".join(line.strip() for line in text.split("\n"))

它维护所有换行符,包括空行换行符和尾随换行符。

>>> text="   asd dfk dfjk\n   jdfk dfkj dkfj\n\n  dfjk dfjk dfjk\n"
>>> print(text)
   asd dfk dfjk
   jdfk dfkj dkfj

  dfjk dfjk dfjk

>>> print("\n".join(line.strip() for line in text.split("\n")))
asd dfk dfjk
jdfk dfkj dkfj

dfjk dfjk dfjk

>>>