Python基本数据类型:字符串(String)

一、字符串的创建与编码(转换)

可以使用'或"来创建字符串,创建字符串只需给变量分配一个字符串类型(单引号或双引号括起来的)的值就可以。

str1='Hello'
str2="world!"

Python3中字符串是使用Unicode编码的,所以支持多种语言。对于单个编码,可以使用ord()函数将字符转换为对应整数,使用chr()函数将整数转换为对应字符。

>>> ord('x')
120
>>> chr(999)
'ϧ'

Python的字符串类型是str,在内存中是以Unicode编码的,一个字符对应若干个字节。如果在传输中就需要将其str变为以字节为单位的bytes以节省空间,bytes类型的数据只需要以b为前缀的单引号或双引号表示,也可以通过encode()方法编码为指定的bytes:

>>> print(type('s'))
<class 'str'>
>>> x=b's'
>>> print(type(x))
<class 'bytes'>
>>> 's'.encode('ascii')
b's'
>>> '中国'.encode('utf-8')
b'\xe4\xb8\xad\xe5\x9b\xbd'

反过来读取文件时就需要将bytes变为str,可用decode()方法:

>>> b's'.decode('ascii')
's'
>>> b'\xe4\xb8\xad\xe5\x9b\xbd'.decode('utf-8')
'中国'

二、字符串长度与访问字符串中的值

要计算字符串中包含多少字符,用len()函数计算。如果字符串是bytes类型,则len()函数计算的是字节数。

>>> len('abcd')
4
>>> len('中国')
2
>>> len(b'abcd')
4
>>> len('中国'.encode('utf-8'))
6

可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当默认使用UTF-8编码对tr和bytes进行转换。

python没有单字符类型,单字符也可以作为字符串使用,需要访问字符串可以使用[]加索引来访问,也可以使用[:]来截取部分子字符串。

>>> str1="Hello world"
>>> print(str1[0])
H
>>> print(str1[2:7])
llo w
>>> print(str1[-3:-1]) #倒着截取rl>>> print(str1[:-3:-1]) #逆序截取dl

三、字符串格式化

输出格式化的字符串,Python与C是一致的用%来实现,在字符串内部%c格式化字符及ASCII码、%S格式化字符串、%d格式化整数、%u格式化无符号整型、%f格式化浮点数字,可指定小数点后的精度、%e用科学计数法格式化浮点数、%%在字符串中表示%。

>>> print('我叫%s今年%d岁,身高%f!'%('小张',20,172.5))
我叫小张今年20岁,身高172.500000!

格式化操作符辅助指令:

符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)




《自己学习使用,如有雷同此为借鉴》:后边一个表格为借鉴。


猜你喜欢

转载自blog.csdn.net/suoluo114/article/details/80647094