今天朋友问了我一个问题大致代码如下
def replace_file(suff):
fp = open(file_name, 'r+', 'UTF-8')
text_list = fp.readlines()
for line in text_list:
line_new = line.replace("xxxxxxxxxxx", suff)
fp.write(line_new)
fp.close()
这是一个批量文本替换功能的一部分,但是在实际应用时,却发现部分文本出现了诡异的替换结果,如:<user_name>sisnsadwqqw</user_name> 某一段需要替换成 <user_name>sisn</user_name>。
但是实际上的替换效果却是 <user_name>sisn</user_name>n\n</user_name>,造成这种结果的是因为python3的r+中使用write后,会造成更替(replace)效果,即一个字节一个字节的替换原本的内容,要是长度超过之前的内容还好,能得出我们想要的正确结果,若是替换的内容短与之前的内容,就会造成部分内容还是之前的效果。
# r+ 读写 不重新创建 而是在源文件写 # 要注意写的时候,文件指针的位置, # 不然可能覆盖原先部分内容
文章评论
Best Expert Advice Forum