一、字符串定义
1. 单行字符串
's'和"s"
2. 多行字符串
'''s''' 注意与多行注释进行区分
二、转义符
- 换行: \n
- 反斜杠: \
- 单引号: ’
- 双引号: "
- 制表符: \t
- …
三、%操作符格式化
1. 字符串:%s
-
可以结合元组使用
a='%s是第%d个字母' b=('H',8) C=('T',20) print(a%b)#输出:H是第8个字母 print(a%c)#输出:T是第20个字母
-
注意元组中元素个数必须与字符串操作符数量相同,且一一对应
a='%s是第%d个字母' b=('H',8,3) print(a%b) #输出:not all arguments converted during string formatting 报错
2. 十进制整数:%d
3. 浮点数:%f
print('.2f'%6)
#输出6.00
print('.2f'%10/3)
#报错
注意%与+ - * /等同级,故从左到右运算
4. 字符:%%
5. format方法格式化
"我叫{},今年{},性别{}".format("小花",24,"女")
#输出:我叫小花,今年24,性别女
- 字符串中{}的默认顺序为:0 1 2
- format参数中的顺序为: 0 1 2
注意format中的参数可以多,不能少
"我叫{1},今年{0},性别{2}".format(24,"小花","女")
#输出:我叫小花,今年24,性别女
顺序可以指定
"我叫{0},今年{0},性别{0}".format("不知道")
#输出:我叫不知道,今年不知道,性别不知道
可以全部指定为同一个参数
"我叫{name},今年{age}".format(name="小花",age=24)
#输出:我叫小花,今年24
可以给每个参数命名
-
format方法的格式控制
-
:<填充><对齐><宽度><,><.精度><类型>
-
:
引导符号 -
<填充>
用于填充的 单个字符 -
<对齐>
- 左对齐:<
- 右对齐:>
- 居中对齐: ^
-
<宽度>
- 槽设定的输出宽度
-
<,>
- 数字的千位分隔符
-
<.精度>
- 浮点小数的精度
- 字符串最大输出长度
-
<类型>
- 整数类型:b,c,d,o,x,X
- 浮点数类型:e,E,f,%
- 二进制:b
- UNICOD字符:c
- 十进制:d
- 八进制:o
- 十六进制小写字母:x
- 十六进制大写字母:X
- 科学计数法:e,E
- 定点表示法:f
- 百分比:%
"{0:^20}".format("PYTHON") #输出:'=======PYTHON======='
"{0:*>20}".format("BIT") #输出:'*****************BIT'
"{:10}".format("BIT") #输出:'BIT '
默认左对齐,默认填充空格
-
-
四、字符串的增删改查
- 字符串是不可变类型,在字符串中所有涉及原序列改变的操作,都是重新生成了一个字符串
1. 字符串增加函数
-
str.center(width,[fillchar])
-
返回一个指定宽度的居中字符串,width表示填充之后整个新的字符串的长度 ,fillchar表示需要填充的字符,fillchar可以省略,默认填充的字符是空格
'hello'.center(10,'-') #输出:--hetao---
-
-
str.ljust(width,[fillchar])
-
原字符串居左显示
'hello'.ljust(10,'~') #输出:hello~~~~~
-
-
str.rjust(width,[fillchar])
-
原字符串居右显示
'hello',rjust.(10,'#') #输出:#####hello
-
2. 字符串删除函数
-
str.strip()
-
用于移除字符串头尾的空格或指定字符,该方法只能删除开头或是结尾的字符,不能删除中间部分的字符
'*****hello*****'.strip('*') #输出:hello ***贪婪模式,有多少删多少,但必须在开头和结尾***
-
-
str.lstrip()
- 用于移除字符串左边的空格或指定字符
-
str.rstrip()
- 用于移除字符串右边的空格或指定字符
3. 字符串修改函数
- str.replace(old,new,max)
-
old表示旧字符串,new表示新字符串,max表示在原字符串上需要替换的最大次数,默认为全部替换
'today is a good day today is a good day today is a good day'.replace('good','nice',2) #输出:today is a nice day today is a nice day today is a good day
-
- tri.title()
-
字符串所有单词的首字母大写
'today is a good day'.title() #输出: Today Is A Good Day
以空格为每个单词的间隔
-
4. 字符串查找函数
-
str.count(sub)
-
返回sub子串出现的次数,区分大小写
'good good good'.count('good') #输出:3
计数时不会重复利用
'abababab'.count('abab') #输出:2
-
-
string.find(str,start,end)
-
检测str是否包含在string中,如果是,则返回第一次匹配到的结果的起始字符索引值,否则返回-1,start和end可以指定查找索引范围(左闭右开),不指定默认从起始点开始
'good good good'.find('0',5,9) #输出:6 'good good good'.find('z') #输出:-1
-
-
string.rfind(str)
-
从右向左检测,和find()基本类似,但是查找方向不一致
'good good good'.rfind('o') #输出:12
输出的还是正向索引
-
-
string.index(str,start.end)
-
跟find()方法一样,只不过如果str不在,string中会报一个异常
'good good good'.index('o',5,9) #输出:6 'good good good'.index('z') #输出:ValueError: substring not found
-
-
string.rindex(str)
-
从右向左检测,和index()基本类似,但是查找方向不一致
'good good good'.rindex('o') #输出:12
输出的还是正向索引
-
-
str.startswith(obj)
- 检查字符串是否为obj开头,如果是则返回True,否则返回False。如果参数start和end指定值,则在指定范围内检查
-
str.endswith(obj)
- 检查字符串是否以obj结尾,如果是则返回True,否则返回False。如果参数start和end指定值,则在指定范围内检查
5. 字符串其他常用函数
-
字符串自身属性函数
- len(str)
- 长度,返回字符串str的长度
len('一二三123') #输出:6
- 长度,返回字符串str的长度
- str(x)
-
任意类型x所对应的字符串形式
str(1.23) #输出:'1.23'
str([1,2]) #输出:"[1,2]"
-
列表、元组这类的数据转换为字符串类型时会在逗号后面加一个空格
print(len(str([1,2]))) #输出:6 '[1,2]'
-
- eval(str)
- 将str转化为有效表达式,参与运算,并返回表达式的值
eval("1+2") ##输出:3
先进行字符串拼接得到’1+23’,再进行表达式运算,eval()函数的参数只能是一个字符串eval("1+2"+"3") ##输出:24
- 将str转化为有效表达式,参与运算,并返回表达式的值
- len(str)
-
进制转换函数
- bin(num)
- 返回整数num对应二进制的小写形式字符串
- oct(num)
- 返回整数num对应八进制的小写形式字符串
- hex(num)
- 返回整数num对应十六进制的小写形式字符串
- bin(num)
-
编码解码函数
- chr(u)
- ord(str)
- 运用:规定1对应A,2对应B,3对应C,输入123,输出ABC
A:65 a:97
-
字符串大小写转换函数
- str.lower()
- 返回字符串str的副本,全部字符变为小写
'HELLO'.lower() #输出:hello
- 返回字符串str的副本,全部字符变为小写
- str.upper()
- 返回字符串str的副本,全部字符变为大写
'hello'.upper() #输出:HELLO
- 返回字符串str的副本,全部字符变为大写
- str.swapcase()
- 返回字符串str的副本,字符小写变大写,大写变小写
'HEllo'.swapcase() #输出:heLLO
- 返回字符串str的副本,字符小写变大写,大写变小写
- str.lower()
-
字符串种类判断函数
- str.islower()
- 如果str所有字符都是小写字母则返回True,否则返回False
- str.isupper()
- 如果str所有字符都是大写字母则返回True,否则返回False
- str.isalpha()
- 如果str所有字符都是字母则返回True,否则返回False
- str.isdigit()
- 如果str所有字符都是数字则返回True,否则返回False
- str.isalnum
- 如果str所有字符都是字母或数字则返回True,否则返回False
- str.isspace()
- 如果str中只包含空白字符,则返回True,否则返回False
- str.islower()
-
字符串分割合并函数
- str.split(sep,num)
- 将sep作为分割符切割原字符串,如果指定了num,则表示仅使用num个字符串截取原字符串,sep默认为空格,split返回的结果是一个列表
'My name is Hua Hua'.split() #输出:['My','name','is','Hua','Hua']
'My-name-is-Hua-Hua'.split('-',2) #输出:['My','name','is-Hua-Hua']
- 将sep作为分割符切割原字符串,如果指定了num,则表示仅使用num个字符串截取原字符串,sep默认为空格,split返回的结果是一个列表
- str.join(iter)
-
将iter变量的每一个元素后面增加一个str字符串,返回值为一个字符串
'-'.join('hello') #输出:h-e-l-l-o
只在中间加,首尾不加
'+'.join(['1','2','3','4']) #输出:1+2+3+4
可以对列表使用,但依旧返回一个字符串
-
- str.split(sep,num)