字符串的常用操作:
目录
1.1拼接字符串
使用‘+’运算符完成多个字符串的拼接
例如:m = '圆周率' n = '3.1415926' print(m+'——'+n)
执行以上代码,将显示:
圆周率——3.1415926
字符串不允许与其他数据类型拼接
解决类似问题可以利用str()函数将数据转换
1.2计算字符串的长度
由于不同字符所占的字节数有所不同,在计算字符串长度时,先了解一下各个字符所占的字节数
数字、英文、下划线、小数点、空格占一个字节
汉字根据情况的不同占2-4个字节:
汉字在GBK/GB2312编码中占2个字节 在UTF-8/Unicode占用三个字节/四个字节
我们用len()函数计算长度,string为字符串
格式; len ( string )
例如:m = 'hello world' print(len(m))
得到:11 (空格占一个)
实际开发时,有时需要字符实际的字节数
UTF-8编码汉字占三个字节:
str1 = '你好,world'
print(len(str1.encode()))
得到:14
如果是GBK编码
str1 = '你好,world'
print(len(str1.encode('gbk')))
得到:11
1.3 截取字符串
字符串属于序列,如果需要截取字符串,可以采用切片的方式
string [start : end : step]
string:要截取的字符串
start:截取第一个字符索引,如果不指定,默认为0
end:截取最后一个字符索引
step:切片的步长,如果省略,默认为1
1.4 分割字符串
分割字符串是把字符串分割为列表
字符串对象的split()方法可以实现字符串分割,也就是按照指定的分隔符切分为列表,该列表的元素中不包括分隔符:
str.split ( sep, maxsplit )
str:分割的字符串
sep:指定分隔符,默认为none
maxsplit:最大分割次数,默认为全部
返回值为字符串列表
使用split()方法时如果不指定参数,默认采用空白符分割,这时无论有几个空白都将作为一个分隔符分割
1.5 检索字符串
(1)count()方法 检索指定字符串在另一个字符串中出现的次数,如果检索的字符串不存在,则返回0,否则返回出现的次数
str.count(sub[,start[,end]])
str:表示原字符串
sub:表示要检索的子字符串
start:可选参数,表示检索范围的起始位置索引,如果不指定则从头开始检索
end:可选参数,表示检索范围的结束位置索引,如果不指定则一直检索到尾
例如:
str1 = '张三, 李四, 王五'
print('字符串', str1, '包括', str1.count(','), '个逗号')
结果为:字符串 张三, 李四, 王五 包括 2 个逗号
(2) find() 方法
该方法用于检索是否包含指定字符串。如果检索的字符串不存在,则返回-1,否则返回首次出现该字符串时的索引。其语法格式如下:
str.find(sub[, start[, end]])
str:表示原字符串
sub:表示要检索的子字符串
start:可选参数,表示检索范围起始位置的索引,默认为从头检索
end:可选参数,表示检索范围终止位置的索引,默认为检索到结尾
如果只是想要判断指定的字符串是否存在,可以使用in关键词实现
print('张三' in str1)
另外,python提供 rfind() 方法,作用与find()方法类似,只是从右边开始查找
(3) index() 方法
index() 与 find() 方法相似,用于检索是否包含指定的字符串,只不过如果使用 index() 方法,当指定的字符串不存在时会抛出异常
str.index(sub[,start[,end]])
另外,python还提供了rindex()方法,作用与 index() 类似,从右边开始查找
(4) startswith() 方法 (endswith()方法类似,检索是否用指定字符串结尾)
该方法用于检索字符串是否以指定子字符串开头。如果是则返回True,否则返回False
str.startswith(prefix[,start[,end]])
str:原字符串
prefix:表示要检索的子字符串
start:可选参数,表示检索范围起始位置的索引,默认为从头检索
end:可选参数,表示检索范围终止位置的索引,默认为检索到结尾
1.6 字母的大小写转换
python中,字符串对象提供了 lower() 方法与 upper()方法,进行字母的大小写转换
lower()方法 与 upper() 方法
用于将字符串的大写字母转换小写字母,如果没有需要被转换的字符,则将原字符串返回
str.lower()
另外有:
str.upper()
1.7 去除字符串空格和特殊字符
用户在输入数据时,可能会无意中输入多余的空格,或在一些情况下,字符串前后不允许出现空格和特殊字符(特殊字符指制表符\t,回车符\r,换行符\n)
(1) strip()方法
用于去掉字符串左右两边空格和特殊字符
str.strip([chars])
str:要去除空格的字符串
char:可选参数,用于指定要去除的字符,可以指定多个,如果设置chars为',%',则去除左右两侧字符',' , '%',如果不指定参数,默认去除空格、制表符、回车符、换行符
(2) lstrip()方法
用于去除左侧空格和特殊字符
str.lstrip([chars])
(3)retrip()方法
用于去除右侧空格和特殊字符
str.rstrip([chars])
(2)、(3) 参数含义与 (1) 相同
1.8 格式化字符串
格式化字符串就是先指定一个模板,在这个模板上预留几个空位,然后根据需要填上相应内容
这些空位需要通过指定的符号标记(其实就是占位符),这些符号不会显示
方法一:使用%操作符
格式:'%s' % str
%s:根据需要转换不同类型变化,比如%d——十进制格式输出,%s——字符串类型输出
str:每次需要不同变量
例如:
named = '张三'
num1 = 20
print('姓名':%s\n '年龄':%d' %(named,num1))
代码结果是
姓名:张三
年龄:20
方法二:format() 方法
语法格式:str.format(args)
str:模板
args:指定要转换的项,如果多项,用逗号进行分割
模板格式:
{ [index] [: [ [fill] align] [sign] [#] [width] [.precision] [type] ]}
index:可选参数,用于指定要设置格式的对象在参数列表中的索引位置,索引值从0开始,默认根据值的先后顺序自动分配
fill:可选参数,用于指定空白处的填充符
align:可选参数,用于指定对齐方式(值为'<'表示内容左对齐,'>'和'='表示右对齐,''^)表示居中
sign:可选参数用于指定无符号数
#:对于二进制、八进制、十六进制,加上#,显示0b/0o/0x前缀
width:指定所占宽度
.precision:指定保留的小数位数
type:指定类型
例如:
moban = '学号:{:0>3s}\t 班级:{%s}\t 姓名:{%s}'
print(moban.format('5', '一班', '张三'))
代码结果为:
学号:005
班级:一班
姓名:张三