刚刚解决了一个处理中文解码编码的问题,有必要写下来总结这次经验。
因为每行中行内容有点多,想人为地分成两行。BUT,UnicodeDecodeError发生了。
首先本人现在的对编码解码的判断还不是十分清楚。多次尝试后,我想到用比较直观的解决办法就是用len函数来测算字符串长度,进一步清楚目前编码的形态。比如下面的一个简单处理比较,得到实际的中文字数长度后,再处理内容分行或者截取会更加方便,也不会发生像UnicodeDecodeError这类错误。
>>> f=open('1.txt') #读取文件1.txt的三行中文内容
>>> f.seek(0)
>>> for line in f:
... print(len(line))
...
73
77
77
#LEN测一下三行中文内容发现结果不是实际中文字的长度,目测是一个中文算两个字节的长度
>>> f.seek(0)
>>> for line in f:
... print(len(line.decode('gbk'))) #解码后LEN测一下三行中文内容发现是实际中文的长度
...
47
41
41
>>>