博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python字符串
阅读量:4149 次
发布时间:2019-05-25

本文共 949 字,大约阅读时间需要 3 分钟。

 

1。字符串还是字节串?

我认为,python的字符串只能说是字节串,你甚至可以在里面存放一张图片或者一个二进制可执行文件

import types

f=open('d://hello.jpg','r')
pic=f.read()
print type(pic)==types.StringType
print pic

如果图片存在,这段代码会显示True和一串乱码。显然所谓字符串只是一串字节数据。

2。' ' 和 u' '

python的字符串有' '和u' '两种,前者是一个字节串,后者是经过unicode编码的。unicode是一种用两个字节表示每一个字符的编码方式,具体不介绍了。可以这样测试:

>>>str1='你好'

>>>str1
'/xc4/xe3/xba/xc3'        得到一个字节串,我的机子是xp系统的,默认编码是cp936,所以这是“你好”的cp936编码
>>>str2=str1.decode('cp936')
>>>str2
u'/u4f60/u597d'          转化为unicode编码,str2是一个unicode字符串

str1和str2都是一个字符串,不过编码的方式不一样,我们可以看出他们都占用4个字节,不过真实长度却一样。

>>>len(str1)

4
>>>len(str2)
2

str1只是一个普通的字节串,python并不知道他使用的是什么编码,所以长度等于它占用的字节数。而str2是一个经过unicode编码的 字符串,我们使用字符串对象的方法decode告诉系统'/xc4/xe3/xba/xc3'是一个cp936编码串,然后系统会把它转化为 unicode编码串u'/u4f60/u597d',系统就可以判断出这是一个含有两个字符的字符串。反过来,我们可以使用encode方法把 unicode字符串编码为普通字符串。

>>>str2.encode('gbk')

'/xc4/xe3/xba/xc3'

惊喜的是,我们其实很容易就可以得到一个中文unicode字符串。我们测试一下:

>>>mycity=u'佛山'

>>>mycity
u'/u4f5d/u5c71'

看到吗?python已经为我们完成了转换,mycity已经是unicode字符串。

转载地址:http://mesti.baihongyu.com/

你可能感兴趣的文章
实验5-5 循环的合并
查看>>
实验5-6 do-while循环结构
查看>>
实验5-7 程序调试入门
查看>>
实验5-8 综合练习
查看>>
第2章实验补充C语言中如何计算补码
查看>>
深入入门正则表达式(java) - 命名捕获
查看>>
使用bash解析xml
查看>>
android系统提供的常用命令行工具
查看>>
【Python基础1】变量和字符串定义
查看>>
【Python基础2】python字符串方法及格式设置
查看>>
【Python】random生成随机数
查看>>
【Python基础3】数字类型与常用运算
查看>>
Jenkins迁移jobs
查看>>
【Python基础4】for循环、while循环与if分支
查看>>
【Python基础5】列表和元组
查看>>
【Python基础6】格式化字符串
查看>>
【Python基础7】字典
查看>>
【Python基础8】函数参数
查看>>
【Python基础9】浅谈深浅拷贝及变量赋值
查看>>
Jenkins定制一个具有筛选功能的列表视图
查看>>