python unicode编码书写方式_python 中文编码 小结 ,json读写,str转换unicode,文字比较...

最近用python做不少整理数据的工作,其中就包含不少关于中文处理的,所以总总结一下方便以后使用

1:json含汉字的utf编码读写

Python

f2 = codecs.open('country_ipnum.json', mode='rb', encoding='utf-8')

c = eval(f2.read())

1

2

f2=codecs.open('country_ipnum.json',mode='rb',encoding='utf-8')

c=eval(f2.read())

如此读取可以原样还原出json中的数据结构

Python

line = json.dumps(a['features'][i]) + '\n'

f3.write(line.decode("unicode_escape"))

1

2

line=json.dumps(a['features'][i])+'\n'

f3.write(line.decode("unicode_escape"))

在写入json的时候,可以这样每行都写入json,注意编码,可以确保把汉字写进入。

2:str和unicode转换

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”)

3:文字比对

先type输出其类型,然后 最好使用==进行比较

if(c[k][‘country’].decode(‘utf8’) == a[“features”][i][‘properties’][‘country_cn’]):

在这里,前部分是str的汉字编码,用decode转换成utf8.然后与后半部分原本就是unucode进行对比

No related posts.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值