字符串
Python3支持两种类型的字符串:str(支持Unicode编码)、bytes,两者之间可以相互转换(str转bytes用encode(),bytes转str用decode())
Python3.x完全支持中文字符,解析器默认采用 UTF-8解析源程序,无论是数字字符、英文字母、汉字都按一个字符来对待和处理。
Python3.x中可用中文作为标识符
字符串的构造
在Python中字符串的构造,主要通过两种方法来实现:一是使用str函数,二是用单引号、双引号或三引号。在Python中,使用引号是一种非常便捷的构造字符串方式。
如果代码中的字符串包含了单(双)引号,且不用转义字符,则整个字符串就要用双(单)引号来构造。
转义字符
- \(行尾):续行符
- \:一个\
- ‘:’
- “:”
- \n:换行符
- \r:回车
- \t:横向制表符
- \v:纵向制表符
- \f:换页符
- \ooo:3位八进制数ooo对应的字符
- \xhh:2位十六进制数hh对应的字符
- \uhhhh:4位十六进制数对应的Unicode编码
原始字符串
在 r" "中写字符串,所有的字符不会被转义
三重引号字符串
可保留所有字符串的格式信息(三重引号中的引号是双引号)
字符串格式化
- 字符串格式化的一般形式
注: - [ ]中的内容可以省略
- 简单的格式是%加格式字符,如%f、%d、%c等
- 当最小宽度及精度都出现时,它们之间不能有空格,格式字符和其他选项之间也不能有空格,如%3.1f
Python中常用的格式字符与c类似,不再赘述。
- format()方法格式化字符串
格式:
示例:
print('{0},{1}'.format(1, 2))
print('{1},{0}'.format(1, 2))
#花括号中的0,1代表了位置,即format()可以根据位置传递参数
list1 = ['zsj','1905']
list2 = ['hh','1918']
print('{},{}'.format(*list1))
#可以用“*序列名称”的形式作为format方法的参数
print('{0[0]},{1[1]}'.format(list1,list2))
print('{1[0]},{0[1]}'.format(list1,list2))
#format方法可以有多个序列作为参数,{0[1]}的含义是第0个序列的第2个元素(起始下标为0)
print('{name},{classnum}'.format(name = 'zsj' , classnum = '1905'))
#通过关键参数的形式实现传参
dict1 = {'name':'zsj','class':'1905'}
print('{name},{class}'.format(**dict1))
#用字典传参
运行结果:
补充:
3. "f"前缀,类似于format()方法
name = 'zsj'
classnum = '1905'
print(f'{name},{classnum}')
运行结果:
字符串的截取
- stringName[index]:取出单个字符
- stringName[[start]:[end]:[step]]:取出一段字符
注: 字符串的索引也可以为负数
字符串的内置函数
len():长度
max():最大字符
min():最小字符
ord():获取Unicode编码
chr():把Unicode编码转换为相应字符
字符串常用方法
注意:所有涉及到返回字符串的都是新字符串
1.
center(width,fillchar):居中
ljust(width,fillchar):左对齐
rjust(width,fillchar):右对齐
注: width表示宽度,fillchar表示填充字符,默认为空格
str = 'sxau'
print(str.center(10, '*'))
print(str.ljust(10, '*'))
print(str.rjust(10, '*'))
运行结果:
2.
lower():大写转小写
upper():小写转大写
3.
capitalize():字符串首字母大写
title():每个字母的首字母大写
swapcase():大小写互换
4.
islower():是否全为小写
isupper():是否全为大写
isdigit():是否全为数字
5.
find(str[ ,start [,end] ] ):从左至右查找str在字符串中首次出现的索引。若未找到则返回-1
rfind(str[ ,start [,end] ] ):从右至左的find()
index(str[ ,start [,end] ])和rindex(str[ ,start [,end] ]):与find()和rfind()类似,若找不到会抛出异常
6.
count(str[start[,end]]):统计出现次数,若不存在则返回0
7.
split():以指定字符为分隔符,从左至右分割字符串,返回一个列表,默认通过空白符分割
8.
join():连接序列中的元素,并在两个元素之间插入指定字符,返回一个字符串
join()是split()的逆方法
str = 'sxau'
print('+'.join(str))
tuple1 = 'a','b','c','d'
print('+'.join(tuple1))
运行结果:
9.
replace(old,new,count):查找字符串中的old子串,并用new子串将其替换,count默认为-1,表示替换使用匹配项,若规定count的值,则最多替换count次,最终返回新的字符串
10.
maketrans():生成字符映射表
translate():根据字符映射表替换字符
str = ''.maketrans('sxau','rjxy')
str1 = 'sxau'
print(str1)
print(str1.translate(str))
运行结果:
11.
strip():去除字符串两侧的空白字符或指定字符,返回新的String