(补充):字符前面加r/R来阻止转义
字符串
python中可以把字符串看成是一个序列(容器),容器中内容只能是字符,每一个字符可以称为字符串中的元素。
字符串是一个不可变的序列,有序的(不可变指的是字符串中的每个字符,以及每个字符的位置不可变)
获取字符串中的单个字符
每一个字符串中的字符都会对应一个下标,下标是根据字符在字符串中的位置,从前往后依次增加的(第一个是0)
获取单个字符(下标不能越界)
语法:字符串[下标] ---> 根据下标获取字符串中的字符
说明:
字符串:可以是字符串的变量,也可以是字符串值
[]:固定写法
下标:0~字符串长度-1; -1 ~ -长度
str3 = 'python'
#p -->0 y -->1 t -->2 h-->3......n -->5
#n -->-1 0 -->-2 h -->-3 t-->-4......p -->-6
切片
获取部分字符
a.语法:字符串[起始下标:结束下标] -->获取字符串中从起始下标开始,到结束下标-1的字符
默认步长为1
注意:起始下标对应的字符一定要在结束下标对应的字符前面,否则取不到值。
str2 = '今天心情也要美美哒'
print(str2[1:-1])
#天心情也要美美
b.语法:字符串[ 起始下标:结束下标:步长] --> 从起始下标开始获取,每步长获取一个,获取到结束下标前一个为止
步长为正:从前往后取(起始下标对应的字符要在结束下标对应的字符前面,否则取不到值)
步长为负:从后往前取(起始下标对应的字符要在结束下标对应的字符后面,否则取不到值)
str5 = '海贼王、一拳超人、一人之下、进击的巨人'
print(str5[1:10:2])
#贼、拳人一
print(str5[10:0:-1])
#人一、人超拳一、王贼
切片时下标可以省略,省略不同下标有不同意义
str3 = '阁下何不同风起,扶摇直上九万里'
print(str3[:4])
#阁下何不
print(str3[:4:-1])
#里万九上直摇扶,起风
省略结束下标:字符[起始下标:] ---->从开始下标取,取到最后
str3 = '阁下何不同风起,扶摇直上九万里'
print(str3[-4:])
#上九万里
str3 = '阁下何不同风起,扶摇直上九万里'
print(str3[-4::-1])
#上直摇扶,起风同不何下阁
str3 = '阁下何不同风起,扶摇直上九万里'
print(str3[::-1])
#里万九上直摇扶,起风同不何下阁
注意:下标可以越界
字符串运算符
字符串支持+、*和比较运算符
+
字符串的+号运算符
字符串1 + 字符串2 --> 将字符串1和字符串2拼接在一起产生一个新的字符串
str4 = '玉树临风美少年'
str6 = '揽镜自顾夜不眠'
str7 = ' '
print(str4+str7+str6)
#玉树临风美少年 揽镜自顾夜不眠
*
字符串的*号运算符
字符串1 * n -->字符串1重复n次,产生一个新的字符串(n只能是数字)
str8 = '家有千金,行止由心!'
print(str8*3)
#家有千金,行止由心!家有千金,行止由心!家有千金,行止由心!
比较运算符
判断相等
print('abc' == 'abc')(判断字符串两边的值是否相等)
#True
print('abc' != 'ac')
#True
比较大小
从前往后,每个字符的编码值的大小,如果第一个相等就比第二个直到比到不相同为止 (如果都相等就是True)
print('zabcdef' > 'zbc')
#False
判断一个字符是否是数字字符,判断一个字符是否是字母字符(根据编码值比较)
char = '5'
print('0'<=char<='9')
#True (判断char是否是数字字符)
char = 'H'
print('a'<=char<='z' or 'A' <=char<='z') (判断判断char是否是字母字符)
##True
in和not in
字符串1 in 字符串2 --> 判断字符串1是否在字符串2中(字符串2是否包含字符串1)结果是布尔值。
print('ab' in 'abc')
#True
print('ab' in 'acd')
#False
print('ab' not in 'abc')
#False
print('ab' not in 'acd')
#True
len()函数
len是python内置函数,功能是用来获取序列的长度(容器中元素的个数)
len(序列)
字符串的长度就是字符串中字符的个数
str9 = '床前明月光\n疑是地上霜!'
print(len(str9))
#12
str9 = r'床前明月光\n疑是地上霜!'
#13
str9 = '你好吗?\u4eff\u5cff'
print(len(str9))
#6
str9 = '你好吗?\u4eff\u5cff'
print(str9[len(str9)-1])
#峿
str9 = '你好吗?\u4eff\u5cff'
print(str9[-len(str9)])
#你
%(格式字符串)
字符串的内部,通过格式占位符来表示字符串中变化的部分,然后在后面用值来填充变化的部分
语法:带有占位符的字符串 % (给占位符赋值的值)
注意:前面有多少个占位符,后边()中就必须有多少值。并且值的个数和值的类型要和前面的占位符一一对应
%s --->字符串
%d --->数字
%f --->浮点数
%.nf -->保留小数点后n位小数
%e -->用科学计数法格式浮点数
%c -->数字转字符
nsme = '叶玉'
age = 18
money = 19.699
message = '姓名:%s 年龄:%d 薪资:%.3f' %(nsme,age,money)
print(message)
#姓名:叶玉 年龄:18 薪资:19.699
字符串的内建函数
使用方法:字符串.方法名(参数)
capitalize():将字符串的第一个字符串转换为大写,返回一个新的字符串
如果第一个字符不是字母,就不转换
str1 = 'yeyu'
a = str1.capitalize()
print(a)
#Yeyu
字符串居中
center(width,fillchar)
str1 = '叶玉'
new_str = str1.center(8,'*')
print(new_str)
#***叶玉***
字符串左对齐
ljust(width,fillchar)
str1 = '叶玉'
new_str = str1.ljust(8,'*')
print(new_str)
#叶玉******
字符串右对齐
rjust(width,fillchar)
str1 = '叶玉'
new_str = str1.rjust(8,'*')
print(new_str)
#******叶玉
练习:根据进班顺序,添加学生号 例如 第一个人学号就是python0001
num = 99
new = 'python1807'+str(num).rjust(4,'0')
print(new)
#python18070099
字符串1.count(字符串2)-->统计字符串1中字符串2 的个数
num = 'aaaabbbaaaaa'.count('b')
print(num)
#3
字符串1.endswith(字符串2)-->判断字符串1 是否以字符串2结尾
str1 = 'when i was'
print(str1.endswith('was'))
#True
字符串1.startswith(字符串2)-->判断字符串1 是否以字符串2开头
str1 = 'when i was'
print(str1.startswith('when'))
#True