Python将文件写为UTF-8而不是ANSI

时间:2014-08-30 04:51:33

标签: python

我已经运行下面的python代码来编写一个新文件替换i / p文件中的字符串。它工作正常。但是o / p文件是用ANSI编码创建的,而输入文件是utf-8没有BOM。有人可以指导我如何创建与i / p文件具有相同属性的o / p文件吗?

提前致谢。

import codecs

f1=open(r"D:\Python Programs\New folder\ls.dat","rb")
f2=open(r"D:\Python Programs\New folder\OUTPUT.DAT","wb")

for line in f1:
    s1=line[0:len(line)]
    s3=s1[72:76].replace(str.encode("HKAG"),str.encode("PNAG"))
    s4=s1[0:72]+s3+s1[76:]
    f2.write(s4)

f1.close()
f2.close()

1 个答案:

答案 0 :(得分:2)

使用open包中的编码io,而不是尝试自己推送。{/ p>

import io
from __future__ import unicode_literals

with io.open(r"D:\Python Programs\New folder\ls.dat", "r", encoding="utf-8") as f1:
  with io.open(r"D:\Python Programs\New folder\OUTPUT.DAT", "w", encoding="utf-8") as f2:
    for line in f1:
      s1=line[0:len(line)]
      s3=s1[72:76].replace(u"HKAG", u"PNAG")
      s4=s1[0:72]+s3+s1[76:]
      f2.write(s4)