有选择地替换字符串中的换行符(python)

时间:2017-10-22 00:35:58

标签: python string replace

我已经在这里阅读了不同的Q / A,但无法找到我的解决方案。 我有一些凌乱的长文本,需要用白色空格替换它中的换行符,只有当它在句子的中间时(而不是在"。"或"!&#后) 34;或"?") 例如:

"this line break must stay.  
but this one  
not."

输出必须是:

"this line break must stay.  
but this one not."

1 个答案:

答案 0 :(得分:0)

使用带有负向lookbehind的正则表达式。这是一个正则表达式教程,当我不确定某些用法时,我指的是: https://www.regular-expressions.info/lookaround.html

import re
p = re.compile('(?<![.!?])\n')
text = "hello,\nMy name is Hal.\nHow are\nyou doing?\n"
re.sub(p, ' ', text)
# outputs:
'hello, My name is Hal.\nHow are you doing?\n'

工作原理:

?<!是负面的背后隐藏。 (?<=是积极的外观)。如果模式遵循后视模式,那么负面的后视将匹配模式。

在这种情况下,\n中的匹配模式以及它必须匹配的后视模式为?.!