一、字符串的编码
python3默认为16位的Unicode编码,如下是字符集的发展历史:
内置函数:
-
ord()
可以把字符转换成对应的Unicode编码 -
chr()
可以把十进制数字转换成对应的字符
二、转义字符
使用\+特殊字符
用来实现某些用字符串难以实现的字符,常见的转义字符:
转义字符 | 描述 |
| 续行符 |
| 退格符( |
| 换行符 |
| 横向制表符 |
| 回车符( |
三、字符串的替换
用.replace(old,new)
来实现替换,需要注意的是:原字符串不变,指向到了一个新的字符串。
四、字符串切片slice操作
[start:end:step]
从start到end-1,步长为step。
其中start
,end
,step
都可选择性省略。
五、字符串的分割和合并
- 分割:
需要分割的字符串.split(用什么分割)
,执行后指向的是一个列表 - 合并:
用什么合并.join(需要合并的序列)
,执行后指向的是一个字符串
六、字符串的比较和同一性
我们可以直接使用 ==
!=
对字符串进行比较,是否含有相同的字
符。
我们使用 is
not is
,判断两个对象是否同一个对象。比较的是对象的
地址,即 id(obj1)
是否和 id(obj2)
相等。
七、成员操作符判断子字符串
in
not in
关键字,判断某个字符(子字符串)是否存在于字符串中。
八、字符串常用方法汇总
- 常用查找方法
方法 | 说明 |
| a字符串长度 |
| 判断a字符串是否以b字符串开头 |
| 判断a字符串是否义b字符串结尾 |
| a字符串中b字符串第一次出现的位置 |
| a字符串中b字符串最后一次出现的位置 |
| a字符串中b字符串出现的次数 |
- 去除首尾信息
方法 | 描述 |
| 去除a字符串左右两边的指定内容b,默认为空白符 |
| 去除a字符串左边的指定内容b,默认为空白符 |
| 去除字符串a右边指定内容b,默认为空白符 |
- 大小写转换
方法 | 描述 |
| 产生新的字符串,一句话首字母大写 |
| 产生新的字符串,每个单词首字母大写 |
| 产生新的字符串,所有字符全部转换为大写 |
| 产生新的字符串,所有字符全部转换为小写 |
| 产生新的字符串,所有字符大小写转换 |
- 格式排版
方法 | 描述 |
| 居中 |
| 居左 |
| 居右 |
- 特征判断方法
方法 | 描述 |
| 检测字符串是否为字母或数字 |
| 检测字符串是否只有字母组成(包含汉字) |
| 检测字符串是否只有数字组成 |
| 检测字符串是否为空白符 |
| 检测字符串是否为大写字母 |
| 检测字符串是否为小写字母 |
九、可变字符串
众所周知,python中字符串为不可变对象,但常常用到可变字符串时,可以使用io.StringIO
对象。具体代码示例如下:
import io
a = "abcdefghijklmnopqrstuvwxyz"
va = io.StringIO(a)
va1 = va.getvalue()
print("va1:", va1) # va1: abcdefghijklmnopqrstuvwxyz
va.seek(5)
va.write("7")
va2 = va.getvalue() # va2: abcde7ghijklmnopqrstuvwxyz
print("va2:", va2)
十、数据类型转换
类型转换 | 描述 |
| 将x转换为一个整数 |
| 将x转换为一个长整数 |
| 将x转换为一个浮点数 |
| 创建一个复数 |
| 将对象 x 转换为字符串 |
| 将对象 x 转换为表达式字符串 |
| 用来计算在字符串中的有效Python表达式,并返回一个对象 |
| 将参数转换为复数型 |
| 将序列 s 转换为一个元组 |
| 将序列 s 转换为一个列表 |
| 转换为可变集合 |
| 创建一个字典。d 必须是一个序列 (key,value)元组 |
| 转换为不可变集合 |
| 将一个整数转换为一个字符 |
| 将一个整数转换为Unicode字符 |
| 将一个字符转换为它的整数值 |
| 将一个整数转换为一个十六进制字符串 |
| 将一个整数转换为一个八进制字符串 |
对上述方法的代码举例:
# 类型转换
# 转换为int
print('int()默认情况下为:', int()) # int()默认情况下为: 0
print('str字符型转换为int:', int('010')) # str字符型转换为int: 10
print('float浮点型转换为int:', int(234.23)) # float浮点型转换为int:234
# 十进制数10,对应的2进制,8进制,10进制,16进制分别是:1010,12,10,0xa
print('int(\'0xa\', 16) = ', int('0xa', 16)) # int('0xa', 16) = 10
print('int(\'10\', 10) = ', int('10', 10)) # int('10', 10) = 10
print('int(\'12\', 8) = ', int('12', 8)) # int('10', 10) = 10
print('int(\'1010\', 2) = ', int('1010', 2)) # int('1010', 2) = 10
# 转换为float
print('float()默认情况下为:', float()) # float()默认情况下为: 0.0
print('str字符型转换为float:', float('123.01')) # str字符型转换为float: 123.01
print('int浮点型转换为float:', float(32)) # int浮点型转换为float: 32.0
# 转换为complex
print('创建一个复数(实部+虚部):', complex(12, 43)) # 创建一个复数(实部+虚部): (12+43j)
print('创建一个复数(实部+虚部):', complex(12)) # 创建一个复数(实部+虚部): (12+0j)
# 转换为str字符串
print('str()默认情况下为:', str()) # str()默认情况下为: -->这里是两个空格
print('float型转换为str:', str(232.33)) # float型转换为str: 232.33
print('int转换为str:', str(32)) # int转换为str: 32
lists = ['a', 'b', 'e', 'c', 'd', 'a']
print('列表list转换为str:', ''.join(lists)) # 列表list转换为str: abecda
# 转换为list
strs = 'hongten'
print('序列strs转换为list:', list(strs)) # 列表list转换为str: abecda
# 转换为tuple
print('列表list转换为tuple:', tuple(lists)) # 列表list转换为tuple: ('a', 'b', 'e', 'c', 'd', 'a')
# 字符和整数之间的转换
print('整数转换为字符chr:', chr(67)) # 整数转换为字符chr: C
print('字符chr转换为整数:', ord('C')) # 字符chr转换为整数: 67
print('整数转16进制数:', hex(12)) # 整数转16进制数: 0xc
print('整数转8进制数:', oct(12)) # 整数转8进制数: 0o14