Pandas读取txt格式的csv文件报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 24: invalid start byte
使用pandas读取gagesII水文数据的txt格式的csv文件
basin_class=pd.read_csv(basin_class_fp,na_values="n/a")
出现报错:
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb2 in position 24: invalid start byte
上网搜索,解决方案有写脚本,然后查看是部分还是整体编码问题的,还有在参数中写“ignore”解决的。设置ignore虽然没有报错了,但是读出的表格却不能对齐。由于水平有限,想快速解决问题,而网上又没有decode bype为0xb2的相关资源。最后还是在python的documentation里找到了齐全的encoding类型。并找到了这句:
Codec.encode(input[, errors])
Encodes the object input and returns a tuple (output object, length consumed). For instance, text encoding converts a string object to a bytes object using a particular character set encoding (e.g., cp1252 or iso-8859-1).
也就是说txt使用了特别的编码方式把字符串对象编码成了字节对象,编码方式为cp1252和iso-8859-1。果然当我设置encoding=cp1252之后,问题解决了,得到了对齐的表格。
basin_class = pd.read_csv(basin_class_fp,encoding='cp1252',na_values="n/a")
总结下来,出现这种UnicodeDecodeError编码错误,八成需要设置encoding方式,不妨参考python的documentation见参考文献。
介于本人非计算机专业,写代码以应用为目的,错误之处欢迎大佬指正。
(本文原创,转载请附链接)
[1]https://docs.python.org/3.7/library/codecs.html#codecs.StreamWriter