关于python的str和unicode以及编码的问题

事情是这样的,自己想用python将腾讯首页上的中文全部取出,遇到了一些困难,又扯到了python的编码问题。所以,研究了一下。

Python内部有一个unicode对象,所以python的内置编码为unicode编码。如果你的源代码文件为utf-8编码,那么请你在你的源代码第一行加上 -*- coding:utf-8 -*- 这一句,以告诉python解释器,你的源代码是用utf-8编码的。你的字符串也就是str,是utf-8编码的。那么你在处理的时候,就要用decode(‘utf-8’),来创建一个unicode对象。不多说,用例子来过一遍你就懂了。

1 x = ‘中’ #x为str类型, 是utf-8 编码的
2 
3 y = x.decode(‘utf-8’) #y为unicode类型,是unicode编码的

 

unicode和str在python中是两个不同的数据类型,看例子:

1 x = '中国'
2 
3 print repr(x[0])
4 
5 y = x.decode('utf-8')
6 
7 print repr(y[1])

 

结果为:

'\xe4'

u'\u56fd'

也就是有网友所说的str相当于java中的byte[],而unicode就如char[]。有这点味道在里面。

还强调一下,str(一个unicode对象)得到的结果是:unicode 到 utf-8的转换。

1 x = '中国'
2 
3 print repr(x[0])
4 
5 y = x.decode('utf-8')
6 
7 print repr(y[1])

 

结果为:

'\xe4'

'\xe5\x9b\xbd'

 

 

附:关于提取出中文的问题:请参照stackoverflow上的一个问答

http://stackoverflow.com/questions/2718196/find-all-chinese-text-in-a-string-using-python-and-regex

再附一个讲这类问题的博客:

http://cache.baidu.com/c?m=9d78d513d9841df409b0c2291a17a771695097153ac0a16168a0925f93151a070771e3ca30531513a7cf6b1702b83d5efeb7762c385966f1d9df8939c0a6d76d6a9f27432140d61f4f8658b8cb31749c7f8d2ca3ce44b3fced61d3ff88889b034eca5106789df28c470017d76cf51232e1a0985f15284afcb26e&p=882a9644d29915b313acc7710e118227&newp=8b2a9642c7934eac59e9d63d5b5480395c5bc4387ebad1147bc5&user=baidu&fm=sc&query=unicode%B6%D4%CF%F3+str+%C7%F8%B1%F0&qid=fcc0f0d204dd6f02&p1=2

转载于:https://www.cnblogs.com/hengli/archive/2012/10/20/2732505.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值