解决pyshp UnicodeDecodeError的问题

yipeiwu_com5年前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使用matplotlib绘制热图

python使用matplotlib绘制热图

python常用的绘图库就是matplotlib,今天在给公司绘图时,偶然间发现matplotlib可以绘制热图,并且十分简洁,拿出来跟大家分享一下。(由于涉及到公司数据问题,这里采用随...

对Python之gzip文件读写的方法详解

gzip文件读写的时候需要用到Python的gzip模块。 具体使用如下: # -*- coding: utf-8 -*- import gzip # 写文件 f_out = gz...

Python2.x和3.x下maketrans与translate函数使用上的不同

maketrans和translate函数是进行字符串字符编码的常用方法。本文着重点在于演示其基本用法和在不同版本下操作的差异。本文提到的2.X版本指2.6以上的版本,3.X版本指3.1...

python将类似json的数据存储到MySQL中的实例

python将类似json的数据存储到MySQL中的实例

由于之前对于爬取下来的数据都是存入MongoDB中,想起来还没有尝试存入MySQL,于是将一篇简单的文章爬取下来,存入MySQL试试 这里用到的python模块是pymysql,因为My...

Python脚本实现自动将数据库备份到 Dropbox

最近,正好发生了一件大事,就是 GitLab 的运维同学不小心删除了生产的数据,虽然 GitLab 已经骇人听闻的准备了五种备份机制,但是,仍然导致他们丢失了将近 6 个小时的用户数据,...