正则表达式删除换行符

Jea*_*n77 12 python regex python-2.7

我是Python的新手,我遇到了正则表达式问题.我正在尝试删除文本文件中每行末尾的换行符,但前提是它跟在小写字母后面,即[a-z].如果该行的结尾以小写字母结尾,我想用空格替换换行符/换行符.

这是我到目前为止所得到的:

import re
import sys

textout = open("output.txt","w")
textblock = open(sys.argv[1]).read()
textout.write(re.sub("[a-z]\z","[a-z] ", textblock, re.MULTILINE) )
textout.close()
Run Code Online (Sandbox Code Playgroud)

Tim*_*ker 23

尝试

re.sub(r"(?<=[a-z])\r?\n"," ", textblock)
Run Code Online (Sandbox Code Playgroud)

\Z只在字符串末尾匹配,在最后一个换行符后,所以它绝对不是你需要的.\zPython正则表达式引擎无法识别.

(?<=[a-z])是一个正向的lookbehind断言,用于检查当前位置之前的字符是否为小写ASCII字符.只有这样,正则表达式引擎才会尝试匹配换行符.

此外,始终使用带有正则表达式的原始字符串.使反斜杠更容易处理.

  • 我会用`[\ r \n] +`替换`\ r?\n`来同时击中单个`\ r``. (2认同)