一、字符串元素
1.阻止转义
在字符串的最前面可以添加r/R来阻止字符串中的转义字符转义
str1='how \are you\n fine '
str2=r'how \are you\n fine '
print(str1)
print(str2)
2.python中可以吧字符串看成一个序列(容器),容器中的内容就是字符,
每一个字符可以看成是字符串中的元素
字符串是一个不可变的序列(不可变指的是字符串中的每个字符,以及每个字符的位置不可变)
str2='hello' #字符串一旦确定,不可变,(内容不可变,位置不可变)
3.获取字符串中的单个字符(字符串下标不能越界)
语法:字符串[下标]--->根据下标获取字符串中的字符 下标只能是整数,下标可以写变量
说明:a.字符串:可以是字符串的变量,也可以是字符串值
b.[]:固定写法
c.下标:0 ~ 字符串长度-1 -1: -1 ~ -长度
Python中的每一个字符串中的字符,都有一个对应的下标,下标是根据字符在字符串中的位置,从前往后依次增加的
下标有两种标法:
str3='python'
# p-->0 y-->1 t-->2 h-->3 0-->4 n-->5
# n-->-1 o-->-2 h-->-3 t-->-4 y-->-5 p-->-6
print(str3[2]) #t
print(str3[-4]) #t
一个空格算一个字符,一个TAB键(制表符)算一个字符,一个转义字符算一个字符
str4='good good study\n day day up!'
print(str4[-11])
print(str4[17])
4.获取字符串中的部分字符(切片)
a.
**语法字符串[起始下标:结束下标]--->获取字符串中起始下标开始,到结束下标前的所有的字符
注意:起始下标对应的字符要在结束下标对应的字符的前面,否者不能取到值
正负下标可以同时
str5='同九年,汝何秀!'
print(str5[1:5]) #九年,汝
print(str5[5:2]) #取不到值
print(str5[5:-1]) #何秀
b.
语法:字符串[下标1:结束下标:步长]-->从起始下标开始获取,每步长获取一个,获取到结束下标前为止。
步长为正:从前往后取,起始下标要在结束下标前面(从起始下标开始获取,每步长获取一个,获取到结束下标前为止。)
步长为负:从后往前取,起始下标要在结束下标后面(从结束始下标开始获取,每步长获取一个,获取到起始下标前为止。)
str6='海贼王、一拳超人、一人之下、进击的巨人'
print(str6[1:10:2]) #贼、拳人一
print(str6[10:0:-1]) #人一、人超拳一、王贼
c.切片时下标可以省略,省略不同的下标有不同的意义
1.省略起始下标:字符串[:结束下标]---->从开头取(注意:这儿的开头可能是第一个字符,也可能是最后一个字符)
str7='阁下何不同风起,扶摇直上九万里'
print(str7[:4]) #阁下何不
print(str7[:4:-1]) #里万九上直摇扶,起风
2.省略结束下标:字符[起始下标:]---->从开始下标取,取完为止
print(str7[-4:]) #上九万里
print(str7[-4::-1]) #上直摇扶,起风同不何下阁
3.两个下标都省:字符[:]---->全部取完
print(str7[:]) #阁下何不同风起,扶摇直上九万里
print(str7[::-1]) #里万九上直摇扶,起风同不何下阁
4.切片下标可以越界
print(str7[-100:7]) #阁下何不同风起
二、字符串运算符
python中的字符串支持+、*和比较运算符
1.字符串中的+号运算符---->将字符串1和字符串2拼接在一起产生一个新的字符串
str1='玉树临风美少年'
str2='夜不眠揽镜自顾'
str3=','
print(str1+str3+str2) #玉树临风美少年,夜不眠揽镜自顾
**注意:+号两边要么数字要么字符串,类型要一致
2.*
字符串1*n(整数)---->字符串重复n次,产生一个新的字符串,0就不会打印出来,负数也没有
str4='家有千金,行止由心'
print(str4*2) #家有千金,行止由心家有千金,行止由心
先算乘法再算加法
print(str1+str2*2) #玉树临风美少年夜不眠揽镜自顾夜不眠揽镜自顾
3.比较运算符
判断相等
print('abc'=='abc') #Ture
print('abc'!='ab') #Ture
比较大小:比较两个字符串中从前往后每个字符串的编码值的大小,直到比出大小
若比出大小,后面的字符串就不比了
print('adfv'>'zab') #False
print('你好'>'safgd') #Ture
print('a'<='j'<='z') #Ture
4.in和not in
字符串1 in 字符串2--->判断字符串1是否在字符串2中
结果是布尔值
print('ab' in 'abc') #Ture
print('ab' not in 'abc') #False
print('ab' in 'adbc') #False 位置也要在相对正确的位置
str7='今天的感觉真好'
print(str7[len(str7)-1])
5.len()函数
len是Python内置函数,功能是用来获取序列号的长度(容器中元素的个数)
len(序列)
字符串的长度就是字符串中字符的个数
print(len('hello')) #5
print(len('你好吗?我时')
三、格式字符串
格式字符串
字符串的内部,通过格式占位符来表示字符串中变化的部分,然后在后用值来填充变化的部分
语法:带有占位符分字符串 % (给占位符赋值的值)
注意:前面有多少个占位符,后面就要有多少个值
%s ----> 字符串
%d ----> 整数
%f ----> 小数
%.nf ----> 保留小数点后n位小数(五舍六入)
%c ----> 字符
name='李四'
age=18
money=10.567
message='姓名'+name+'年龄'+str(age)+'工资'+str(money)
message='姓名:%s 年龄:%d 工资 %.2f' %(name,age,money)
print(message)
print('%d,%.3f'%(97,97))
五、字符串的內建函数
python内部给我们提供了很多字符串相关的使用方式
使用方法:字符串.方法名(参数)
1.capitalize() : 将字符串的第一个字符转换为大写,返回一个新的字符串
如果第一个字符不是字母,就不转换
str1='love'
str2=str1.capitalize()
print(str2)
2.字符串对齐
a.center(width,fillchar)
b.ljust(width,fillchar)
c.rjust(width,fillchar)
width-->长度,新的字符串的总共的长度 fillchar-->剩下部分填充的字符(字符就是长度是1的字符串)
字符串1.center(m,x)
str3='xxx'
print(str3.ljust(7,'0')) #xxx0000
num1='789'
print(num1.center(7,'0'))
num='78'
new_str=num.rjust(4,'0')
print('python1807'+new_str)
3.字符串1.count(字符串2):统计字符串1中有多少个字符串2
str1='asfsfsfbimc';str2='fs'
print(str1.count(str2)) #2
4.字符串1.endswith(字符串2)---->判断字符串1是否以字符串2结尾
str1 = 'when i was'
print(str1.endswith('was'))
print(str1.endswith('when'))
5.字符串1.find(字符串2):检测字符串1中是否有字符串2,并返回所在位置的下标
在字符串1中查找字符串2查找并返回从左往右第一个的首位下标,如果没有找到,就返回-1
str1 = 'was when i was young,was i have a dream Z'
print(str1.find('was'))
print(str1.find('wasaa'))
print(str1.find('Z'), len(str1))
6.isnumeric()
print('1234'.isnumeric())
print('一二五七九'.isnumeric())
print('二百五'.isnumeric())
print('壹萬'.isnumeric())
7.isTitle()
标题化:每个单词首字母大写,其他字母小写
print('The One'.istitle())
8.字符串1.join(字符串2)
str1='aaa'
str2='xyz'
print(str1.join(str2)) #xaaayaaaz