解决pyshp UnicodeDecodeError的问题

yipeiwu_com7年前Python基础

用最新版本(2.1.0)的pyshp解析shp文件的records时:

records = sf.records()

如果records里面含有中文字段,那么就会报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 0: invalid continuation byte

这个是编解码的问题,解决方法是把版本降到1.2.12就可以了,虽然records里面的中文字段还需要再次解码,但结果是很清晰的。

没有仔细阅读最新的官方文档,最后有Unicode and Shapefile Encodings说明。

因为最开始我用的是:

sf = shapefile.Reader('data/2009/2009.shp')

最新的版本可以直接设置编码方式,这样就好了:

sf = shapefile.Reader('data/2009/2009.shp', encoding='gbk')

以上这篇解决pyshp UnicodeDecodeError的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python:Scrapy框架中Item Pipeline组件使用详解

Item Pipeline简介 Item管道的主要责任是负责处理有蜘蛛从网页中抽取的Item,他的主要任务是清晰、验证和存储数据。 当页面被蜘蛛解析后,将被发送到Item管道,并经过几个...

pyinstaller打包多个py文件和去除cmd黑框的方法

pyinstaller打包多个py文件和去除cmd黑框的方法

1.打包多个py文件并且去除cmd黑框 格式:pyinstaller.exe -F 路径\文件名.py空格路径\文件名.py空格--noconsole 以上这篇pyinstaller打...

对numpy中数组转置的求解以及向量内积计算方法

有点抱歉的是我的数学功底确实是不好,经过了高中的紧张到了大学之后松散了下来。原本高中就有点拖后腿的数学到了大学之后更是一落千丈。线性代数直接没有学明白,同样没有学明白的还有概率及统计以及...

浅谈Series和DataFrame中的sort_index方法

Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。 若要按值对 Ser...

使用Python来开发Markdown脚本扩展的实例分享

使用Python来开发Markdown脚本扩展的实例分享

关于Markdown 在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排...