字符串相关运算与类型转换
一.获取单个或多个字符
字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。下标从0开始,依次增加。下标也可以倒着数,倒着第一个字符下标是-1,
一. 获取单个字符(不能越界)
1. 字符串[下标] - - 获取字符串中指定下标对应的字符。
a.字符串 - 只要结果结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
b.[] - 固定写法
c.下标 - 需要获取的字符对应的下标;注意,下标不能超出字符串的范围。
例:'hello' --> h 下标为 (0,-5 ) o 下标为 (4,-1)
两个下标,正数是从头开始数,负数是从尾开始倒着数。
result1 = '生命的灿烂光辉!'[0] #获取字符串中下标是0的字符,并赋值给变量result1
print(result1)
二.获取部分字符(字符串切片)
1. 字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下班前为止。每次下标值加上步长去获取下一个字符。
a.字符串 - 只要结果结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
b.[] - 固定写法
c.开始下标、结束下标 - 下标值(这儿的下标可以越界)
d.步长 - 必须是整数(正负数都行),如果步长是正,从开始下标开始正向获取;如果步长是负数,从开始下标开始倒向获取。
注意:当步长为正,要求开始下标对应的字符位置必须在结束下标对应的字符位置的前面,否则结果为空串。 当步长为负,要求开始下标对应的字符位置必须在结束下标对应的字符位置的后面,否则结果为空串。
补充说明:步长为正时,字符首 开始下标 结束下标 字符尾 【【【【【步长为负时,字符首 结束下标 开始下标 字符尾
str2 = '人生若只如初见!'
print(str2[0:8:3]) #从前往后取 (人只见)
print(str2[0:-1:2]) # (人若如见)
print(str2[0:-1:-2]) #这个是空。 (空)
print('结果:' , str2[-1:-12:-1]) # 从后往前取 (!见初如只若生人)
2.省略写法与说明
str4 = '生如夏花'
print(str4[1:3] #省略步长默认是1 (如夏)
print(str4[:3:1] #省略开始下标,从头开始 (生如夏)
print(str4[1::1] #省略结束下标,取到字符串结尾 (如夏花)
print(str4[:]) # 全省略,正着取整句话。 (生如夏花)
print(str4[::-1]) # 让字符串倒序, (花夏如生)
三.字符串相关运算
1.字符串支持的运算符: + , * ,> , < ,== , != , >= , <= 。python中的字符串支持数学运算符中的+和*,以及所有的比较运算符。
1.+ :字符串1 + 字符串2 -将字符串拼接在一起,产生 一个新的字符串。注:字符串和数字不能混合相加。
2.* :字符串 * N(正整数) - 字符串重复N次,产生一个新的字符串。
注:字符比较大小:从第一个字符开始,依次往后找到第一个不相等的字符对,判断它们的编码值的大小。 谁的编码值大,对应的字符串大。不再往后比较。
newstr = "asd" + "1" + '123'
print(newstr)
newstr = "asd" * 2
print(newstr)
print("asd" + "1" * 2)
3.判断字母大小写的应用例:
1判断是否是小写字母: 'a'<=变量<=‘z’ ---- 变量>='a' and 变量>='z'
1判断是否是大写字母: 'A'<=变量<=‘Z’ ---- 变量>='A' and 变量>='Z'
#判断一个字符串中第三个字符是否是字母。
str2 = 'asdwe2345'
char = str2[2] #将第三个字符取出
print('是否是字母', 'a'<= char <='z' or 'A'<= char <='Z')
- == , != 可以判断两个字符串是否相等或者不相等。
print("人生" == '人生') #结果True
print("人生" == '生人') #结果 False
四.in 和 not in操作 (在什么里面和不在什么里面)
1.in: 字符串1 in 字符串2 ----判断字符串2是否包含字符串1.(判断字符串1是否是字符串2的子串)
2.not in: 字符串1 not in 字符串2 ----判断字符串2是否不包含字符串1.(判断字符串1是否不是字符串2的子串)
print('asd' in ' asdf welwe') # True
print('asd' not in ' asdf welwe') # False
五.len函数(长度是从1开始记。)
1. len(序列) -- 获取序列长度,获取序列中元素的个数。
a.序列:字符串、列表、元组、字典等等都属于序列。
b.len(字符串) -- 获取字符串的长度(字符的个数) 结果是一个整数,空的话是0.
注:【一个可以转移的转义字符长度是1 【一个编码字符的长度是1 【一个空格字符的长度是1 【手动按的tab的长度一般是4,,\t长度是1.
print(len('称霸劳而无功' )) #长度6
str3 = input("请输入:")
print(str3[len(str3)-1])
#`len长度是从1开始数,而下标从0开始数。所以从长度中取对应下标时要减1.`
六.格式字符串
1.在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化。
1.常用占位符
%s (字符串)
%d (整数)
%f (小数) (%.nf 保留小数点后面n位小数)
%c (字符) (可以将数字转换成字符)
2.包含占位符的字符串: 字符串 %(值1,值2,值3……)
1.% -- 固定写法
2.()-- 固定写法,字符串中只有一个占位符时,这个()可以省略。
3.括号里的值 -- 值和占位符要一一对应(个数、类型、位置都要对应)
name = input('姓名:')
age = 18
sex = '男'
message = '我叫%s,今年%d,性别:%s.字符%c' %(name,age,sex,97)
print(message)
print('我叫%s,今年%d,性别:%s.字符%c' %(name,age,sex,97))
七.类型转换
类型名(数据) -- 将指定的数据转换成指定类型。
1.int(数据) - 将其它数据转换成整形
print(int(1.6)) # 浮点数可以转换成整数,直接保留整数部分。
print(int(True)) #布尔可以转化成整数,True -- 1 False --0
print(int('12')) #只有去掉字符串的引号后本身就是一个整数的字符串才能转换成整数。
2.float(数据) -将其它数据转换成浮点型
print(float(122)) #所有的整数都可以转换成浮点数,在后面加.0
#所有的布尔都可以转换成浮点数。
print(float('12.3')) #去掉引号后本身就是一个数字的字符串就能转换。
3.bool(数据) -将其它数据转换成布尔
注:python 中所有的数据都可以转换成布尔。【 所有为空为0的值都会转换成False.其它的都是True 。
print(bool(12.1)) #True
print(bool('')) # False
print(bool(None)) # False ,None是关键字。
4.str(数据) -将其它数据转换成字符串,
python中所有的数据都可以转换成字符串,在数据前后各加一个引号。
八.Python 部分字符串内建函数说明
1.字符串.capitalize() - 将指定的字符串的第一个字符转换成大写字母,返回新的字符串。注:只有第一个字符是字母的时候才有效。
str1 = 'adsf'
print(str1 . capitalize())
2.字符串对齐方式
a.居中: 字符串.center(width, fillchar) - width决定新的字符串长度。
b.左对齐: 字符串.ljust(width, fillchar) - fillchar用来填充多出来位置的字符。
c.右对齐: 字符串.rjust(width, fillchar) - width 是整数,fillchar 是字符。
str1 = 'adsf'
print(str1 . center(6,'2'))
print(str1 . ljust(6,'2'))
print(str1 . rjust(6,'2'))
3.字符串.count(字符串2) - 在字符串中统计字符串2出现的次数。
str3 = 'adsfagfewqrafdasdfb'
print(str3.count('a'))
print('adsfagfewqrafdasdfb'.count('a'))
4.字符串.isalpha() - 判断字符串中是否全是字母或者数字,
注意:非ascll码中的字符检测不出来!
print('asdfas'.isalpha()) #返回的结果为布尔型
5.字符串 . join(字符串2) - 将字符串插入到字符串2每个字符之间。
str3 = '*'.join('qwe')
print(str3) #结果;q*w*e
6.字符串.split(字符串2) - 以字符串2去切割字符串1,返回一个列表。
print('12,32,44'.split(',')) #结果:['12', '32', '44']