鱼C论坛

 找回密码
 立即注册
查看: 1589|回复: 1

[已解决]1次打开,2次re.sub并写文件,内容会翻倍,why?

[复制链接]
发表于 2023-6-7 16:45:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
f=open(mdfile,'w+')

    f.write(re.sub(text_to_search, replacement_text, alllines, 1))
    f.write(re.sub(text_to_search1, replacement_text1, alllines, 1))


    f.close()

源文件27k,单1个f.write(re.sub是正常的。 先后2个文件内容就翻倍。  该怎么分别替换2个内容呢?难道先open1次,sub第一次,close;再open第2次,再sub第2个吗?:)
最佳答案
2023-6-7 16:50:39
你的代码中有个问题,它正在将全部内容写入文件两次,每次都是一个独立的  re.sub()  修改版,这就是为什么你的文件大小翻倍了。 re.sub()  是一个全局的替换函数,它将替换所有匹配的内容,而不仅仅是第一个。

如果你要替换两个不同的内容,你可以链式地调用  re.sub() ,像这样:
f=open(mdfile,'w+')

newlines = re.sub(text_to_search, replacement_text, alllines, 1)
newlines = re.sub(text_to_search1, replacement_text1, newlines, 1)

f.write(newlines)

f.close()

在这个例子中,我首先替换了  text_to_search ,然后用得到的新的文本作为输入,再次替换  text_to_search1 。这样, f.write()  只被调用一次,所以文件只写入一次,避免了你原来的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-7 16:50:39 | 显示全部楼层    本楼为最佳答案   
你的代码中有个问题,它正在将全部内容写入文件两次,每次都是一个独立的  re.sub()  修改版,这就是为什么你的文件大小翻倍了。 re.sub()  是一个全局的替换函数,它将替换所有匹配的内容,而不仅仅是第一个。

如果你要替换两个不同的内容,你可以链式地调用  re.sub() ,像这样:
f=open(mdfile,'w+')

newlines = re.sub(text_to_search, replacement_text, alllines, 1)
newlines = re.sub(text_to_search1, replacement_text1, newlines, 1)

f.write(newlines)

f.close()

在这个例子中,我首先替换了  text_to_search ,然后用得到的新的文本作为输入,再次替换  text_to_search1 。这样, f.write()  只被调用一次,所以文件只写入一次,避免了你原来的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 21:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表