我的代码在这里:
a = u"\n".join(my_array).replace(u"\n\n", u"\n")
问题是,如果有 "\n\n\n\n",你就剩下 "\n\n" 而我只想要 一个 "\n"
所以我想出了:
a = u"\n".join(my_array)
while a.find(u"\n\n")>=0:
a = a.replace(u"\n\n", u"\n")
我想知道在 Python 中是否有更优雅的方式/也许是 oneliner 不使用正则表达式来做到这一点?
请您参考如下方法:
如果您真的想在一行中完成此操作并且不使用正则表达式,一种将多个 \n 的所有序列减少为单个 \n 的方法是首先由 \nsplit,然后通过单个 \njoin 所有非空段。
>>> a = "foo\n\nbar\n\n\nblub\n\n\n\nbaz"
>>> "\n".join(x for x in a.split("\n") if x)
'foo\nbar\nblub\nbaz'
此处,a 是整个 字符串,即在您执行"\n".join(my_array) 之后,取决于什么my_array 原来是,可能会有更好的解决方案,例如在加入之前从各个行中剥离 \n ,但这仍然有效。
