一、字符串的创建与编码(转换)
可以使用'或"来创建字符串,创建字符串只需给变量分配一个字符串类型(单引号或双引号括起来的)的值就可以。
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 是小数点后的位数(如果可用的话) |
《自己学习使用,如有雷同此为借鉴》:后边一个表格为借鉴。