hid*_*ura 1 python unicode python-3.x
您好我有一个包含unicode字符的大文件,当我尝试在Python 3中打开它时,这就是我的错误.
在add_rnc()中输入第47行"addRNC.py"
文件"addRNC.py",线路13,在初始化 用于rawDoc.readline()值:
文件"/usr/local/lib/python3.1/codecs.py",第300行,解码(结果,消耗)= self._buffer_decode(data,self.errors,final)
UnicodeDecodeError:'utf8'编解码器无法解码158位的字节0xd3:无效的连续字节
我尝试了一切,但没有工作,这里是代码:
rawDoc = io.open("/root/potential/rnc_lst.txt", 'r', encoding='utf8')
result = []
for value in rawDoc.readline():
if len(value.split('|')[9]) > 0 and len(value.split('|')[10]) > 0:
if value.split('|')[9] == 'ACTIVO' and value.split('|')[10] == 'NORMAL':
address = ''
for piece in value.split('|')[4:7]:
address += piece
if value.split('|')[8] != '':
rawdate = value.split('|')[8].split('/')
_date = rawdate[2]+"-"+rawdate[1]+"-"+rawdate[0]
else:
_date = 'NULL'
id = db.prepare("SELECT id FROM potentials_reg WHERE(rnc = '%s')"%(value.split('|')[0]))()
if len(id) == 0:
if _date == 'NULL':
db.prepare("INSERT INTO potentials_reg (rnc, _name, _owner, work_type, address, telephone, constitution, active)"+
"VALUES('%s', '%s', '%s', '%s', '%s', '%s', NULL, '%s')"%(value.split('|')[0], value.split('|')[1],
value.split('|')[2],value.split('|')[3],address,
value.split('|')[7], 'true'))()
else:
db.prepare("INSERT INTO potentials_reg (rnc, _name, _owner, work_type, address, telephone, constitution, active)"+
"VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"%(value.split('|')[0], value.split('|')[1],
value.split('|')[2],value.split('|')[3],address,
value.split('|')[7],_date, 'true'))()
else:
pass
db.close()
Run Code Online (Sandbox Code Playgroud)
您的文件实际上包含无效的UTF-8.
当您说"包含unicode字符"时,您应该知道Unicode没有指定字符的表示方式.因此,即使文件代表Unicode数据,它也可以是UTF-8,UTF-16(UTF-16BE或UTF-16LE,每个都有或没有BOM),不推荐使用的UCS-2,或者甚至是其中一个深奥的形式......
仔细检查文件是否有效; 我敢打赌你确实有一个字节0xD3(11010011),它必须在UTF-8中是一个双字节字符的前导字节,在一个跟随位置(换句话说,0xD3紧跟在一个二进制表示开始的字节之后) 11 [大于0xC0]).
最可能的原因是您的文件包含非ASCII字符,但不是UTF-8.
| 归档时间: |
|
| 查看次数: |
1462 次 |
| 最近记录: |