为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2021-06-10 14:05:45
我正在尝试使用此脚本将大量文件转换为公共行结尾。该脚本在 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'代替应该可以完成工作。


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信