python编码错误处理

问题一:

python转换unicode编码,如b'\xcf\xb5\xcd\xb3\r\n ’转换中文

同时解决UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 4: invalid continuation byte问题。

b = b'\xcf\xb5\xcd\xb3\xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc2\xb7\xbe\xb6\xa1\xa3\r\n'

#decode()默认值为'utf-8'
print(b.decode())

会出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 4: invalid continuation byte。

这个问题是由于utf-8字符集不涵盖这b中的内容,utf-8不理解你给我说的啥,gbk懂啊,找gbk。

【解决办法】

#将Unicode转化为gbk
print(b.decode('gbk'))
系统找不到指定的路径

嗯。。好的,我去处理系统找不到的路径了。。

 

问题二:

用DataFrame保存数据至csv文件,选择gbk编码方式保存,出现错误“UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\x...’ in position”

df = pd.DataFrame(result)
df.to_csv(FILE_OUTPUT, mode='a', encoding='gbk')

【解决办法】

1. 使用GBK的超集GB18030

df = pd.DataFrame(result)
df.to_csv(FILE_OUTPUT, mode='a', encoding='GB18030')

2. 添加ignore参数,忽略无法编码的字符

print(txt.encode(“GBK“, ‘ignore’))

ref:https://blog.csdn.net/xufankang/article/details/86687242
 

3. 使用codecs模块

import codecs
f = codecs.open('test.txt', 'w', 'utf-8')  # test.txt 也可以换成 test.csv

ref:https://blog.csdn.net/MemoryD/article/details/83303091

4. 先用gbk编码,忽略掉非法字符,然后再译码

print(str.encode('GBK','ignore').decode('GBk')) 

ref:https://zhidao.baidu.com/question/1302043991323187059.html

 

问题三:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128)

【解决办法】 通过选卡分割,增加参数sep='\t'

df.to_csv(file_name, sep='\t', encoding='utf-8')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值