Python-python3.1can';似乎无法处理UTF-16编码的文件?
我试图运行一些代码,简单地遍历一堆文件,并将那些碰巧是.txt文件的文件写入同一个文件,删除所有空格。下面是一些简单的代码,可以实现这一点:Python-python3.1can';似乎无法处理UTF-16编码的文件?,python,utf-8,character-encoding,utf-16,Python,Utf 8,Character Encoding,Utf 16,我试图运行一些代码,简单地遍历一堆文件,并将那些碰巧是.txt文件的文件写入同一个文件,删除所有空格。下面是一些简单的代码,可以实现这一点: for subdir, dirs, files in os.walk(rootdir): for file in files: if '.txt' in file: f = open(subdir+'/'+file, 'r') line = f.readline() while line:
for subdir, dirs, files in os.walk(rootdir):
for file in files:
if '.txt' in file:
f = open(subdir+'/'+file, 'r')
line = f.readline()
while line:
line2 = line.split()
if line2:
output_file.write(" ".join(line2)+'\n')
line = f.readline()
f.close()
但是,我得到了以下错误:
文件“/usr/lib/python3.1/codecs.py”,第300行,解码中
(结果,消耗)=自身缓冲区解码(数据,自身错误,最终)
UnicodeDecodeError:“utf8”编解码器无法解码位置0中的字节0xfe:意外的代码字节
事实证明,这些.txt文件都是UTF-16格式的(根据FireFox,无论如何)。我认为Python3.x应该能够处理任何类型的字符编码
最好的,
乔治娜使用
open(bla,'r',encoding=“utf-16”)
使用open(bla,'r',encoding=“utf-16”)
有各种utf-16编码
- utf-16-be大端号无BOM
- utf-16-lelittle endian无物料清单
- utf-16little-endian+BOM
Python 3.2 (r32:88452, Feb 20 2011, 11:12:31)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 'a'.encode('utf-16')
>>> a
b'\xff\xfea\x00'
>>> a.decode('utf-16')
'a'
>>> a = 'a'.encode('utf-16-le')
>>> a
b'a\x00'
>>> a.decode('utf-16-le')
'a'
>>> a = 'a'.encode('utf-16-be')
>>> a
b'\x00a'
>>> a.decode('utf-16-be')
'a'
您可以按照的建议使用这些编码。有各种utf-16编码
- utf-16-be大端号无BOM
- utf-16-lelittle endian无物料清单
- utf-16little-endian+BOM
Python 3.2 (r32:88452, Feb 20 2011, 11:12:31)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 'a'.encode('utf-16')
>>> a
b'\xff\xfea\x00'
>>> a.decode('utf-16')
'a'
>>> a = 'a'.encode('utf-16-le')
>>> a
b'a\x00'
>>> a.decode('utf-16-le')
'a'
>>> a = 'a'.encode('utf-16-be')
>>> a
b'\x00a'
>>> a.decode('utf-16-be')
'a'
你可以按照的建议使用这些编码,你能告诉Python文件是UTF-16吗?好的,一行:
output\u file.write(input\u file.read().decode('UTF-16')。替换(u“”,u“”).encode('desired encoding'))
你能告诉Python文件是UTF-16吗?好的,一行:output\u file.write(input\u file.read().decode)('utf-16')。替换(u“”,u“”)。编码('desired encoding'))
Woops--谢谢!就在你发布这篇文章的时候,我发现了这篇伟大的文章:Woops--谢谢!就在你发布这篇文章的时候,我发现了这篇伟大的文章: