似乎会有一种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()
,但它似乎消除了段落中断并在换行符处一起运行。
答案 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
>>>