2024-09-30 16:38:33 发布
网友
从一个字符串中删除单个换行符但保留多个换行符的最python方法是什么?在
如
"foo\n\nbar\none\n\rtwo\rthree\n\n\nhello"
变成
"foo\n\nbar one two three\n\n\nhello"
我在考虑使用splitlines(),然后用"\n"替换空行,然后将所有内容重新连接起来,但我怀疑有更好/更简单的方法。也许用正则表达式?在
"\n"
>>> re.sub('(?<![\r\n])(\r?\n|\n?\r)(?![\r\n])', ' ', s) 'foo\n\nbar one two three\n\n\nhello'
这将查找\r?\n或{},并使用lookbehind和lookahead断言来防止两边出现换行符。在
\r?\n
值得一提的是,在野外有三种类型的行尾:
\n
\r\n
\r
前两种是目前为止最常见的。如果您想将可能性限制在这三种情况下,您可以:
当然,如果你不在乎Mac行的结尾,那就去掉|\r,这是很少见的。在
|\r
这将查找},并使用lookbehind和lookahead断言来防止两边出现换行符。在
\r?\n
或{值得一提的是,在野外有三种类型的行尾:
\n
在Linux、Mac OS X和其他Unice上\r\n
在Windows和HTTP协议中\r
在Mac OS 9及更早版本上前两种是目前为止最常见的。如果您想将可能性限制在这三种情况下,您可以:
^{pr2}$当然,如果你不在乎Mac行的结尾,那就去掉
|\r
,这是很少见的。在相关问题 更多 >
编程相关推荐