我正在尝试使用此脚本将大量文件转换为公共行结尾。该脚本在 git-shell 中使用 for 循环调用。运行后,所有行尾都只有 CR 作为行尾。我想是因为 replace(contents, '\n', '\r\n' ) 在 \r 之后也替换了 \n。有没有可能阻止它?我应该逐行替换吗?import sysimport stringimport os.pathfor 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)
2 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
您可以re.sub
用来执行正则表达式替换。
而不是这一行:
cont1 = string.replace(contents, '\n', '\r\n' )
您将使用以下行(不要忘记import re
):
cont1 = re.sub(r'([^\r])\n', r'\g<1>\r\n', contents)
更新:
r'([^\r])\n'
将不匹配文件开头的换行符。使用r'([^\r])?\n'
代替应该可以完成工作。
添加回答
举报
0/150
提交
取消