目录
1 python字符串的方法
1.1 字符串的查找
| 字符串的查找 | count | 计数功能,返回自定字符在字符串当中的个数 |
|---|---|---|
| find | 查找,返回从左第一个指定字符的索引,找不到返回-1 | |
| rfind | 查找,返回从右第一个指定字符的索引,找不到返回-1 | |
| index | 查找,返回从左第一个指定字符的索引,找不到报错 | |
| rindex | 查找,返回从右第一个指定字符的索引,找不到报错 |
操作展示:
s = 'zhucaihui daozhenian'
ret = s.count('i')
print(ret) #3
ret = s.find('a')
print(ret) #4
ret = s.rfind('e')
print(ret) #15
ret = s.rfind('l')
print(ret) #-1
ret = s.index('a')
print(ret) #4
#ret = s.index('m') #报错
#print(ret)
# ret = s.rindex('m') #报错
# print(ret)
ret = s.rindex('c')
print(ret) #3
1.2 字符串的拆分
| 字符串的分割 | partition | 把mystr以str分割成三部分,str前,str自身和str后 |
|---|---|---|
| 字符串的分割 | splitlines | 按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割 |
| 字符串的分割 | split | 按照指定的内容进行分割 |
源码:
s = 'wawawa qusiba ni'
ret = s.partition('qusiba')
print(ret)
s = 'cheng\ngong\nzaizhe'
ret = s.splitlines() # 以列表的形式返回
print(ret)
ret = s.splitlines(keepends=True)
print(ret)
ret = s.split('a')
print(ret)
ret = s.split(' ')
print(ret)
运行结果:
1.3 字符串的替换
| 字符串的替换 | replace | 从左到右替换指定的元素,可以指定替换的个数,默认全部替换 |
|---|---|---|
| translate | 按照对应关系来替换内容 from string import maketrans |
源码:
s = 'hello world!'
ret = s.replace('o','0')
print(ret)
ret = s.replace('o','0',1)
print(ret)
intab = 'world!'
outab = 'python'
tab = str.maketrans(intab,outab)
s2 = s.translate(tab)
print(s2)
运行结果:
makestrans()用法
语法: str.maketrans(intab, outtab]);
Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,
第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
注:两个字符串的长度必须相同,为一一对应的关系。
str.maketrans(intab,outtab[,delchars])
· intab -- 需要转换的字符组成的字符串。
· outtab -- 转换的目标字符组成的字符串。
注:intab中出现重复字符,转换成后者
1.4 字符串的修饰
| 字符串的修饰 | center | 让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充 |
|---|---|---|
| ljust | 让字符串在指定的长度左齐,可以指定填充内容,默认以空格填充 | |
| rjust | 让字符串在指定的长度右齐,可以指定填充内容,默认以空格填充 | |
| zfill | 将字符串填充到指定的长度,不足地方用0从左开始补充 | |
| format | 按照顺序,将后面的参数传递给前面的大括号 | |
| strip | 默认去除两边的空格,去除内容可以指定 | |
| rstrip | 默认去除右边的空格,去除内容可以指定 | |
| lstrip | 默认去除左边的空格,去除内容可以指定 |
源码:str.center( ) 居中
源码:
运行结果:
源码:
运行结果:
源码:
运行结果:
lstrip()左驱除 右驱除rstrip()
源码:
s = ' hello python '
ret = s.strip()
print(s)
print(ret)
运算结果:
字符串格式化:
format() 用法:
相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’
1.使用位置参数:
源码:
运行结果:
2.使用关键字参数:
源码:
运行结果:
3.填充与格式化:
源码:
运行结果:
精度与进制:
源码:
mag = '长方形的长是{:.2f},宽是{:.3f}'
print(mag.format(4/3,8/5))
运行结果:
%%: 输出百分号
源码:
运行结果:
1.5 字符串的变形
| 字符串的变形 | upper | 将字符串当中所有的字母转换为大写 |
|---|---|---|
| lower | 将字符串当中所有的字母转换为小写 | |
| swapcase | 将字符串当中所有的字母大小写互换 | |
| title | 将字串符当中的单词首字母大写,单词以非字母划分 | |
| capitalize | 只有字符串的首字母大写 | |
| expandtabs | 把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8 |
源码:
s = 'Bei Jing Huan Ying Ni'
print(s.upper())
print(s.lower())
print(s.swapcase()) # 将字符串当中所有的字母大小写互换
print(s.title()) # 将字串符当中的单词首字母大写,单词以非字母划分
print(s.capitalize()) # 只有字符串的首字母大写
s1 = '\t长舌妇' # \t 默认占8个
print(s1)
s2 = s1.expandtabs()
print(s2.replace(' ', '@'))
print(s1.expandtabs(tabsize=1))
运行结果:
1.6 字符串的判断
| 字符串的判断 | isalnum | 判断字符串是否完全由字母或数字组成 |
|---|---|---|
| isalpha | 判断字符串是否完全由字母组成 | |
| isdigit | 判断字符串是否完全由数字组成 | |
| isupper | 判断字符串当中的字母是否完全是大写 | |
| islower | 判断字符串当中的字母是否完全是小写 | |
| istitle | 判断字符串是否满足title格式 | |
| isspace | 判断字符串是否完全由空格组成 | |
| startswith | 判断字符串的开头字符,也可以截取判断 | |
| endswith | 判断字符串的结尾字符,也可以截取判断 | |
| split | 判断字符串的分隔符切片 |
源码:
s = 'das32'
s1 = "321321"
print(s.isalnum()) # 断字符串是否完全由字母或数字组成
print(s.isalpha()) # 判断字符串是否完全由字母组成
print(s.isdigit()) # 判断字符串是否完全由数字组成
print(s.isupper())
print(s.islower())
print(s.istitle())
print(s.isspace()) # 判断字符串是否完全由空格组成
print(s.startswith('a'))
print(s.endswith('2', 2, 4)) # 不包含5
运行结果:
2 python字符串的编码
encode是编码,将字符串转换成字节码。str-->byte
decode是解码 ,将字节码转换成字符串。 byte-->str
| 编码方式 | ASCII | Unicode | UTF-8 |
|---|---|---|---|
| 二进制表示字母‘A’ | 01000001 | 00000000 01000001 | 01000001 |
| 二进制表示中文‘中’ | 01001110 00101101 | 11100100 10111000 10101101 | |
| 十六进制形式 | \u4e2d | b\xe4\xb8\xad | |
| 编码范围 | 只有英文 | 所有语言 | 所有语言 |
| 一个字符占字节数 | 1 | 2(少数偏僻字4) | 英文1,中文3(少数偏僻字4-6) |
| 特点 | 统一,英文就在ASCII前面补一个字节 | 节省,英文跟ASCII一样只有一个字节 | |
| 用处 | 内存中,服务器中,比较统一 | 保存在硬盘时,传输时,需要节省 |
源码:
s = '我'
ret = s.encode()
print(ret)
s2 = ret.decode()
print(s2)
s3 = s.encode(encoding='gbk')
print(s3)
s4 = s3.decode(encoding='gbk')
print(s4)
运行结果: