关于python基础错误UnicodeDecodeError、TypeError
一、UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe6
当路径或数据名称中有中文存在时,需要指定为中文类编码,ASCII码不能识别。
在程序头添加语句# -- coding: utf-8 --,并在中文前加字符 u 即可.
例如:
(1)
env.workspace= u"D:/python练习/new.gdb.教育设施"
(2)
facility = arcpy.ListFeatureClasses()for faci in facility:name = faci+u"服务区"
二、UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 21-32: ordinal not in range(128)
在语句# -- coding: utf-8 --下,添加:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
详解
ASCII码:设计之初,就只想到在美国的小范围圈子用,表示编程常用到的数字,大小写的英文字母等,128个。
Unicode:不同的语言就需要不同的字符来表示。当初26个英文字母大小写,在加上些数字以及符号,用128个就够了。但是,如果推向世界,拿中文来说,中文每个汉字就需要每个不同的符号来表示。所以这时候就需要把范围扩大,扩大后就是Unicode,就像它的英文名,表示能表示所有字符。Unicode是好,但是占用的内存也大。原来用四分之一存储空间的ASCII码就能表示英文,但是用Unicode表示也是英文,但是内存却涨了一倍。所以需要优化。这就又有了utf-8。
utf-8:特点是,可以根据需要,该用多少就用多少,能有效减少内存的占用。
gbk : 中文专属的编码。
Python中默认编码方式是Unicode。其它类型的编码想正常输出就需要通过decode和encode两种方式进行转。例如:内容是utf-8格式,打印出来是乱码,需要通过decode.(‘utg-8’)解码为Unicode,然后再通过encode.(‘gbk’)的方式编码为gbk,才能显示为中文。
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器,所以你看到很多网页的源码上会有类似’charset='utf-8’的信息,表示该网页是用的UTF-8编码
编码类型琐碎问题:
1、若本身字符为unicode 类型,显示中文可以使用:
a="abcc\\u8fdd\\u6cd5\\u8fdd\\u89c4"
print a.decode('unicode-escape')
2、使用chardet包下的detect方法检测字符编码:
a = '中国'
print chardet.detect(a)
结果为:{‘confidence’: 0.7525, ‘language’: ‘’, ‘encoding’:‘utf-8’}
3、在读取本地文字作为url一部分时,通常会出现编码错误,可使用:
for row in readCSV:a = row[0]quoteA = urllib.quote(a.decode('gbk').encode('utf-8'))
url = 'https://restapi.amap.com/v3/geocode/geo?address=' + quoteA + '&key=a0325cbd9f7ab7eeb1bdb16ca78922b2'
print url
4、若字符连接类型不一致,例如list.append(),只能填一个参数:
lat = obj["location"]["lat"]
lng = obj["location"]["lng"]
adress = obj["address"]
result=str(lat)+","+str(lng) + ","+adress
list.append(result)
5、python2在直接导出csv时中文乱码,不能像python3一样设置编码,解决方案如下:
import codecs
#该模块的作用是
with open (u'C:\\Users\\RSGIS201-4\\Desktop\\try.csv', 'w+')as file:for v in list:file.write(codecs.BOM_UTF8)#csv\excel只能识别gb2312、gbk、gb18030或utf_8 with BOM编码的中文file.write(v+'\n')
6、遍历json内部同类对象的方式:
result2=[(d['address'],str(d["location"]["lat"]),str(d["location"]["lng"])) for d in jsonfile["results"]]
print result2 #对象为数组的列表[(),(),()]
result1=[(d['address']+","+str(d["location"]["lat"])+","+str(d["location"]["lng"])) for d in jsonfile["results"]]
print result1 #对象为str的列表[ , , ]
或者直接循环:
for obj in jsonfile["results"]:lat = obj["location"]["lat"]lng = obj["location"]["lng"]adress = obj["address"]result=str(lat)+","+str(lng) + ","+adresslist.append(result)
关于python基础错误UnicodeDecodeError、TypeError相关推荐
- python基础——错误处理
python基础--错误处理 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因.在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数 ...
- python nonetype_【已解决】Python程序错误:TypeError: ‘NoneType’ object is not iterable
[问题] 如下代码:def callBlogFunc(funcToCall, *paraList): funcName = funcToCall.func_name; if(blogIsNetease ...
- python:错误:TypeError: string argument without an encoding;str() takes at most 1 argument
这两个错误是相关连的python2.python3的兼容错误. sd=bytes("abc1\ndone", encoding='utf-8'); bytes类在python3,有 ...
- Python 编码错误UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 131: illegal multibyte
报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 131: illegal multibyte sequenc ...
- Python错误:TypeError: 'list' object is not callable
前言 在学习并使用Python的过程中,总会遇到各种各样的错误,因此,写下整个系列的帖子,方便自己回顾,也方便其他同学参阅. 正文 在Python运行过程中遇到了如下错误: TypeError: 'l ...
- python中ioerror怎么解决_Python IOError错误异常原因|python基础教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ python语言IOError错误一般多发生在对文件操作报错时,表示要打开的文件不存在,当然能引发IOEr ...
- python提示错误TypeError: 'dict_keys' object does not support indexing
python提示错误TypeError: 'dict_keys' object does not support indexing 原因:python2与python3之间的差异 python2中形如 ...
- python import 错误 TypeError: 'module' object is not callable
python import 错误 TypeError: 'module' object is not callable 在这里,有 Person.py test.py; 在 test.py 里面 im ...
- Python:Python3错误提示TypeError: slice indices must be integers or None or have an __index__ method解决办法
Python:Python3错误提示TypeError: slice indices must be integers or None or have an __index__ method解决办法 ...
最新文章
- 当 Redis 发生高延迟时,到底发生了什么
- c++ :MFC opencv使用namedWindow,imshow出现两个窗口
- LongAdder分段锁机制
- LSTM之父重提30年前的「快速权重存储系统」:线性Transformer只是它的一种变体...
- 反射java_Java反射原理
- 视达配色教程17 灰色的色彩意象是什么
- 数据安全管理:RSA加密算法,签名验签流程详解
- 《天天数学》连载18:一月十八日
- WebService工具类调用远程接口服务时java.io.IOException: Server returned HTTP response code: 500 for URL XXX
- [NOI2014]魔法森林
- Mocha BSM产品亮点——SNMP Trap的支持
- 163邮箱服务器连接错误 请重试,163邮箱无法连接服务器
- 英特尔第十代处理器为什么不支持win7_Intel最新CPU和主板不能装Win7怎么办
- 二级计算机题世界动物日,计算机二级考试真题-PPT-张宇-世界动物日介绍
- JavaScript,实现这样的情景:阅读协议,阅读完毕后就可以点击同意复选框。
- C# 创建桌面快捷方式
- 基于中文语义词典的语义相关度量方法比较研究
- 深度学习培训完可以找工作吗?深度学习可以做什么?
- python定位元素_Python元素定位
- 设计师专属的导航网站
热门文章
- 电感为什么会啸叫?有效对策有哪些?
- 4.1.1Linux心得
- FANUC机器人系统在维修替换控制器主板上的电池和机器人本体上的电池
- 单向空间后方交会C++代码实现
- 1.公司代码管理工具GIT与SVN
- 5G#DVEV (Development environment-开发环境)
- Mysql一个Select 查询出表内语文及格数学及格的算合格,其他算不合格的统计人数
- 【Cocos2d-x】模仿热血传奇开门动画
- 一万次交易反复验证:庄家一旦出现,那就坐着庄家的顺风车干吧!
- RK3568平台开发系列讲解(驱动篇)class:设备的大管家