用两个字符替换一个字符(\n by \r\n )也会替换替换字符之一

我正在尝试使用此脚本将大量文件转换为公共行结尾。该脚本在 git-shell 中使用 for 循环调用。


运行后,所有行尾都只有 CR 作为行尾。我想是因为 replace(contents, '\n', '\r\n' ) 在 \r 之后也替换了 \n。有没有可能阻止它?我应该逐行替换吗?


import sys

import string

import os.path


for file in sys.argv[1:]:

    if not os.path.exists(file):

        continue

    contents = open(file, 'rb').read()

    cont1 = string.replace(contents, '\n', '\r\n' )

    open(file, 'wb').write(cont1)


梦里花落0921
浏览 213回答 2
2回答

慕哥9229398

您可以re.sub用来执行正则表达式替换。而不是这一行:cont1&nbsp;=&nbsp;string.replace(contents,&nbsp;'\n',&nbsp;'\r\n'&nbsp;)您将使用以下行(不要忘记import re):cont1&nbsp;=&nbsp;re.sub(r'([^\r])\n',&nbsp;r'\g<1>\r\n',&nbsp;contents)更新:r'([^\r])\n'将不匹配文件开头的换行符。使用r'([^\r])?\n'代替应该可以完成工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python