在 Python 中, 字符串的使用随处可见, 可被字符串调用的方法较之列表, 元组也是最多. 字符串也是 Python 的 6 中内建序列之一.
字符串的基本操作
作为序列, 序列的通用操作 (索引, 分片, 加法, 乘法, 成员资格, 长度, 最大值, 最小值) 对于字符串都是适用的. 但是字符串和元组一样都是不可变的, 所以对字符串进行分片赋值是不合法的.
格式化字符串
什么是格式化字符串? 具有特定格式, 可以通过给定值替换特定格式中被标记位置的字符串的操作叫格式化字符串. 比如 "%s 年 %s 月 %s 日" 中不改变字符串中的汉字部分, 仅给出 3 个数字分别按顺序代替字符串中的 "%s" 标记的位置, 来实现动态的年月日的输出.
为什么要用格式化字符串? 和 python 中的函数一样, 对于在频繁使用的情况下, 对于某些格式复杂的字符串, 避免频繁重复的输入固定代码.
使用方法:"% 转换标志 / 字段宽度. 精度 / 转换类型"% 值
"%": 标记转换说明符的开始
转换标志:"-" 表示左对齐;"+" 表示在实数前加上正负号;""(空白字符)表示在整数之前保留空格;"0"表示位数不够时使用字符"0" 填充;
字段宽度: 转换后的字符串至少要有该值的宽度. 如果值为 "*" 表示宽度从后面的元组中读取
点. 精度: 如果转换的是实数, 表示小数点后面的位数; 如果转换的是字符串, 表示转换后的字符串的最大字段宽度. 如果是 "*" 表示精度值从元组中读取.
转换类型: s(string)表示字符型; d 表示整型; f 表示浮点型; 最长用的是这三个字符类型
1. 简单转换
- >>> msg='''**********info of %s**********
- ... name:%s
- ... age:%d'''>>> print(msg%('lufei','lufei',19))
- **********info of lufei**********
- name:lufei
- age:19
2. 字段宽度
- >>> 'the price of aggs:%d'%12
- 'the price of aggs:12'
- >>> 'the price of aggs:%10d'%12 #字段宽度 10
- 'the price of aggs: 12'
3. 转换标志
- >>> 'the price of aggs:%10d'%12 #字符宽度 10
- 'the price of aggs: 12'
- >>> 'the price of aggs:%-10d'%12 #字符宽度 10 左对齐
- 'the price of aggs:12'
- >>> 'the price of aggs:%+10d'%12 #字符宽度 10 显示值的正负号
- 'the price of aggs: +12'
- >>> 'the price of aggs:%+10d'%-12 #字符宽度 10 显示值的正负号
- 'the price of aggs: -12'
- >>> 'the price of aggs:%010d'%12 #字符宽度 10 位数不够使用 0 填充
- 'the price of aggs:0000000012'
4. 精度
- >>> 'the price of aggs:%d'%12
- 'the price of aggs:12'
- >>> 'the price of aggs:%.5d'%12 #转换的是整数, 表示字段最大宽度, 位数不足使用 0 填充
- 'the price of aggs:00012'
- >>> 'login name:%s'%'operadmin'
- 'login name:operadmin'
- >>> 'login name:%.5s'%'operadmin' #转换的是字符串, 表示字段最大宽度, 超过最大宽度部分丢弃
- 'login name:opera'
- >>> 'the price of aggs:%.5f'%12 #转换的是实数, 表示小数点后的位数
- 'the price of aggs:12.00000
字符串方法
1str.capitalize() 首字母大写
2str.casefold() 字符串中的大写换成小写
3str.center(width,filechar) 字符串居中打印
4str.count(x,start,end) 统计某个子串在字符串中出现的次数
5str.encode(self,encoding,errors)
6str.endswith(self,suffix,start,end)判断字符串是否以某个子串结尾
7str.expandtabs(tabsize)
8str.find(sub,start,end)返回字符串中某个字符或者子串的索引. 如果子串或者字符不存在返回 - 1
9str.format()字符串的格式化输出
10str.index(sub,start,end)返回字符串中某个字符或者子串的索引. 如果子串或者字符不存在报错 "substring not found"
11str.isalnum()判断字符串是否只包含字母和数字
12str.isalpha()判断字符串是否只包含字母字符
13str.isdecimal()判断字符串是否仅包含数字
14str.isdigit()判断字符串是否仅包含数字
15str.identifier()判断字符串是否是一个标准的变量名
16str.islower()判断字符串中的祖母字符是否都是小写字符
17str.isnumeric()判断字符串是否仅包含数字
18str.isprintable()判断字符串是否是一个可打印字符串
19str.isspace()判断字符串是否仅包含空格
20str.istitle()判断字符串是否是一个标题(单词首字母大写其他字母都小写)
21str.isupper()判断字符串中的字母字符是否都是大写字符
22str.join(sequence)在 sequence 中每两个元素间插入 str
23str.ljust(width,fillchar)字符串左对齐, 宽度不够使用字符填充, 默认使用空格填充
24str.lower()将字符串中的大写字母转换为小写字母
25str.lstrip(char)移除字符串开头指定的字符, 默认为空格
26maketrans
27str.partition(str)根据指定的分隔符将字符串进行分割. 如果字符串中包含分隔符则分会一个 3 元的元组
28str.replace(old,new,count)使用指定的字符串替换掉原字符串中的某个字符或者子串, 并可以指定替换数量
29str.rfind(sub,start,end)返回字符串中某个字符或者子串的索引, 从右侧开始查找. 如果子串或者字符不存在则返回 "-1"
30str.rindex(sub,start,end)返回字符串中某个字符或者子串的索引. 从右侧开始查询, 如果子串或者字符不存在报错 "substring not found"
31str.rjust(width,fillchar)功能与 ljust 相反, 一个是左对齐一个是右对齐
32str.rpartition(str)使用指定的分隔符分割字符串, 从右侧开始查询分隔符作为分割点. 返回一个 3 元的元组
33str.rsplit(str,num)查找指定字符作为分割点分割字符串, 从右侧开始查找, 可指定分割成 num 个子字符串, 返回分割后的子字符串组成的列表
34str.rstrip(char)移除字符串末尾指定的字符, 默认为空格
35str.split(char,num)查找指定字符作为分割点分割字符串, 可指定分割成 num 个子字符串, 返回分割后的子字符串组成的列表
36str.splitlines()按照行进行分割'\n''\r\n'如果参数 keepends 为 True 则保留换行符, 如果 keepends 为 False 则不保留换行符
37str.startswith(char,start,end)判断字符串是否是以某个字符开始, 可指定起始和结束位置
38str.strip(char)移除字符串开头和末尾的指定字符, 默认为空格
39swapcase
40str.upper()将字符串中的小写字母转换成大写字母
41str.zfill(width)指定字符串的宽度, 宽度不够字符串右对齐使用字符 "0" 填充
Python 第四课(序列之字符串)
来源: http://www.bubuko.com/infodetail-2563303.html