【报错】变量 is not callable
当出现报错 XXX is not callable的时候,很有可能是你正在调用一个不能被调用的变量或对象,具体表现就是你调用函数、变量的方式错误。
【场景】获取到网页内容后,中文不能正常显示
web信息中常会遇到“\u4f60\u597d”类型的字符。首先’\u‘开头就基本表明是跟unicode编码相关的,“\u”后的16进制字符串是相应汉字的utf-16编码。
python里decode()和encode()为我们提供了解码和编码的方法。其中decode('unicode_escape')能将此种字符串解码为unicode字符串。
1、处理字符串中的字符
str1 = '\u4f60\u597d'
print str1.decode('unicode_escape')
你好
2、处理dict中的字符
只有str对象才能调用decode方法,tuple/list/dict调用decode会报错,'dict' object has no attribute 'decode'。
可以调用json模块的dumps方法,将dict中的unicode打印成中文。
import json
a = {u'content': {u'address_detail': {u'province': u'\u5409\u6797\u7701', u'city': u'\u957f\u6625\u5e02', u'street_number': u'', u'district': u'', u'street': u'', u'city_code': 53}, u'point': {u'y': u'43.89833761', u'x': u'125.31364243'}, u'address': u'\u5409\u6797\u7701\u957f\u6625\u5e02'}, u'status': 0, u'address': u'CN|\u5409\u6797|\u957f\u6625|None|CERNET|0|0'}
print json.dumps(a).decode('unicode-escape')
输出:
{"content": {"address_detail": {"province": "吉林省", "city": "长春市", "street_number": "", "district": "", "street": "", "city_code": 53}, "address": "吉林省长春市", "point": {"y": "43.89833761", "x": "125.31364243"}}, "status": 0, "address": "CN|吉林|长春|None|CERNET|0|0"}
【扩展】gbk和utf8的区别
GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中文字符,另外还有一种字符“gb2312”,这种字符仅能存储简体中文字符。
UTF-8编码:它是一种全国家通过的一种编码,如果你的网站涉及到多个国家的语言,那么建议你选择UTF-8编码。
UTF8编码格式很强大,支持所有国家的语言,正是因为它的强大,才会导致它占用的空间大小要比GBK大,对于网站打开速度而言,也是有一定影响的。
GBK编码格式,它的功能少,仅限于中文字符,当然它所占用的空间大小会随着它的功能而减少,打开网页的速度比较快。
【报错】怎么解决python "Non-ASCII character"错误
代码中出现汉字,导致使用时报SyntaxError: Non-ASCII character '\xe9'
解决方法:源代码文件第一行添加:#coding:utf-8
【报错】python 编码问题:'ascii' codec can't encode characters in position 的解决方案
import sys
reload(sys)
sys.setdefaultencoding('utf8')
网友评论