最近用python做不少整理数据的工作,其中就包含不少关于中文处理的,所以总总结一下方便以后使用
f2 = codecs.open('country_ipnum.json', mode='rb', encoding='utf-8')
c = eval(f2.read())
如此读取可以原样还原出json中的数据结构
line = json.dumps(a['features'][i]) + '\n'
f3.write(line.decode("unicode_escape"))
在写入json的时候,可以这样每行都写入json,注意编码,可以确保把汉字写进入。
utf8样例:
‘asdasd’.decode(‘utf8’)
原理:
简单说来就是,python内部表示字符串用unicode(其实python内部的表示和真实的unicode是有点差别的,对我们几乎透明,可不考虑),和人交互的时候用str对象。 s.decode ——–>将s解码成unicode,参数指定的是s本来的编码方式。这个和unicode(s,encodename)是一样的。 u.encode ——–>将unicode编码成str对象,参数指定使用的编码方式。 助记:decode to unicode from parameter encode to parameter from unicode 只有decode方法和unicode构造函数可以得到unicode对象。 上述最常见的用途是比如这样的场景,我们在python源文件中指定使用编码cp936, # coding=cp936或#-*- coding:cp936 -*-或#coding:cp936的方式(不写默认是ascii编码) 这样在源文件中的str对象就是cp936编码的,我们要把这个字符串传给一个需要保存成其他编码的地方(比如xml的utf-8,excel需要的utf-16) 通常这么写: strobj.decode(“cp936”).encode(“utf-16”)
先type输出其类型,然后 最好使用==进行比较
if(c[k][‘country’].decode(‘utf8’) == a[“features”][i][‘properties’][‘country_cn’]):
在这里,前部分是str的汉字编码,用decode转换成utf8.然后与后半部分原本就是unucode进行对比
原创文章,转载请注明: 转载自URl-team
本文链接地址: python 中文编码 小结 ,json读写,str转换unicode,文字比较
No related posts.