首页 > 其他学习 > python > python中的字符串常用操作
2017
09-15

python中的字符串常用操作

basestring是 str 和 unicode 的超类(父类),也是抽象类,因此不能被调用和实例化,但可以被用来判断一个对象是否为 str 或者 unicode 的实例,isinstance(obj, basestring) 等价于 isinstance(obj, (str, unicode))。

1、多个字符串用逗号英文的逗号(,)或者加号(+)连接,print()会依次打印每个字符串,遇到逗号(,)会输出一个空格,遇到加号不会输出空格。

2、str.capitalize():字符串首字母大写

3、str.replace(old,new[,count]):字符串替换,把字符串中的old字符串替换成new字符串,替换count次,默认全部替换。返回替换以后的字符串,原字符串str不改变。

4、str.split(x[,count]) :字符串分割,把字符串str按照x分隔成一个列表

5;对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。

6、len()函数计算的是str的字符数。

7、hash(object):获取一个对象的哈希值。

8、由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes,bytes的每个字符都只占用一个字节。

Python对bytes类型的数据用带b前缀的单引号或双引号表示:

以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

>>> 'ABC'.encode('ascii')

b'ABC'

>>> '中文'.encode('utf-8')

b'\xe4\xb8\xad\xe6\x96\x87'

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。在bytes中,无法显示为ASCII字符的字节,用\x##显示。

str和bytes互相转换时,需要指定编码。最常用的编码是UTF-8。Python当然也支持其他编码方式,比如把Unicode编码成GB2312:

>>> '中文'.encode('gb2312')

b'\xd6\xd0\xce\xc4'

但这种方式纯属自找麻烦,如果没有特殊业务要求,为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')

'中文'

输出格式化的字符串

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:

>>> 'Hello, %s' % 'world'

'Hello, world'

>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)

'Hi, Michael, you have $1000000.'

%运算符就是用来格式化字符串的。在字符串内部,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符有:

%d 整数

%f 浮点数

%s 字符串

%x 十六进制整数

其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

>>> '%2d-%02d' % (3, 1)

' 3-01'(d前面的数字表示最小位数,%后面的0代表用0填充,默认用空格填充)

>>> '%.2f' % 3.1415926

'3.14'

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。