我已经在这里阅读了不同的Q / A,但无法找到我的解决方案。 我有一些凌乱的长文本,需要用白色空格替换它中的换行符,只有当它在句子的中间时(而不是在"。"或"!&#后) 34;或"?") 例如:
"this line break must stay.
but this one
not."
输出必须是:
"this line break must stay.
but this one not."
答案 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
中的匹配模式以及它必须匹配的后视模式为?
,.
或!