更改Python中的文件编码方案
我正在尝试使用拉丁-1编码打开一个文件,以便生成具有不同编码的文件。我得到一个更改Python中的文件编码方案,python,file,python-unicode,Python,File,Python Unicode,我正在尝试使用拉丁-1编码打开一个文件,以便生成具有不同编码的文件。我得到一个名称错误,说明未定义unicode。下面是我用来说明这一点的代码: sourceEncoding = "latin-1" targetEncoding = "utf-8" source = open(r'C:\Users\chsafouane\Desktop\saf.txt') target = open(r'C:\Users\chsafouane\Desktop\saf2.txt', "w") target.wri
名称错误
,说明未定义unicode
。下面是我用来说明这一点的代码:
sourceEncoding = "latin-1"
targetEncoding = "utf-8"
source = open(r'C:\Users\chsafouane\Desktop\saf.txt')
target = open(r'C:\Users\chsafouane\Desktop\saf2.txt', "w")
target.write(unicode(source.read(), sourceEncoding).encode(targetEncoding))
我根本不习惯处理文件,所以我不知道是否应该导入一个模块来使用“unicode”您看到
unicode未定义这一事实表明您使用的是Python3。下面是一个代码片段,它将生成一个拉丁1编码的文件,然后执行您想要执行的操作,将拉丁1编码的文件读入并输出一个UTF8编码的文件:
# Generate a latin1-encoded file
txt = u'U+00AxNBSP¡¢£¤¥¦§¨©ª«¬SHY®¯U+00Bx°±²³´µ¶·¸¹º»¼½¾¿U+00CxÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏU+00DxÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßU+00ExàáâãäåæçèéêëìíîïU+00Fxðñòóôõö÷øùúûüýþÿ'
latin1 = txt.encode('latin1')
with open('example-latin1.txt', 'wb') as fid:
fid.write(latin1)
# Read in the latin1 file
with open('example-latin1.txt', 'r', encoding='latin1') as fid:
contents = fid.read()
assert contents == latin1.decode('latin1') # sanity check
# Spit out a UTF8-encoded file
with open('converted-utf8.txt', 'w') as fid:
fid.write(contents)
如果希望输出不是UTF8,请将编码
参数添加到打开
,例如
with open('converted-utf_32.txt', 'w', encoding='utf_32') as fid:
fid.write(contents)
文档有一个.并且,为了澄清,这是Python2,对吗?因为Python3没有unicode
函数(字符串默认为UTF8)。