字符串相关操作
字符串
一、字符的获取
获取单个字符
字符串中的每个字符都会对应一个唯一的下标(索引),用来表示字符在字符串中的位置
下标从0开始依次增加,0对应的是第一个字符;也可以是从-1开始依次减少,-1对应最后一个字符。
例如:
'chener' --> c -->(0,-6) , h -->(1,-5) , e -->(2,-4) , n -->(3,-3) , e -->(4,-2) , r -->(5,-1)
a.获取单个字符的语法:
字符串[下标] - 获取字符串中与指定下标对应的字符
b.说明:
字符串 - 只要结果是字符串的表达式都可以,例如: 字符串字面量、字符串变量
[] - 固定写法
下标 - 需要获取的字符对应的下标;注意:下标不能越界
语法如下:
result = 'chen er'[-4]
print(result)
print('chen er'[5])
str1 = 'xiao chen er'
print(str1[-5])
2.获取部分字符(字符串切片)
-
语法:
字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下标前为止。
每次下标值加上步长去获取下一个 -
说明:
字符串 - 只要结果是字符串的表达式都可以,例如: 字符串字面量、字符串变量
[] -- 固定写法
开始下标、结束下标 -- 下标值(这里的下标可以越界,一般情况不要越界)
步长 -- 必须是整数(正负数都可以),如果是正数,则从开始下标开始从前往后获取如果是负数,则从开始下标开始从后往前获取
注意:当步长为正,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置的前面,否则结果为空串
当步长为负,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置的后面,否则结果为空串
str2 = 'ai ni bao bei'
print('结果1:', str2[0:6:2]) # 从前往后取
print('结果2:', str2[7:4:-1]) # 从后往前取
print('结果3:', str2[-1:-23:-1]) # 越界
方法二(省略步长):
字符串[开始下标:结束下标] -- 步长默认为1;从开始下标开始到结束下标结束,一个一个取。
print('wo ai ni xiao chen er'[3:2])
方法三(省略开始下标和结束下标):
a.省略开始下标
字符串[:结束下表:步长] -- 当步长是正数,从字符串的第一个字符往后面取到结束下标前为止;当步长是负数,从字符串的最后一个字符往前面取到结束下标前为止
b.结束下标省略
字符串[开始下标::步长] -- 当步长是正数,从开始下标取到字符串的最后一个字符;当步长是负数,从开始下标取到字符串的第一个字符
str3 = 'xiao chen er wo ai ni'
print(str3[:2]), print(str3[:2:-1])
print(str3[2:]), print(str3[2::-1])
print(str3[:])
print(str3[::-1]) # 让字符串倒序
print(str3)
二、类型转换
=======类型转换========
-
语法:
类型名(数据) --> 将指定数据转换成指定类型 -
说明:
类型 --> 任何python支持的,或者自定的类型都可以
数据 --> 需要转换的对象(类型不同要求不一样)
2,转换实例
- int(数据) --> 将数据转换成整型
- float(数据) --> 将数据转换成浮点型
- bool(数据) --> 将数据转换成布尔型
- str(数据) --> 将数据转换成字符串
转换成整型
- a = int(1314.23) # 浮点数可以转换成整型,去掉小数部分
- b = int(True) # 布尔可以转换成整数
- c = int('1314') # 只有去掉字符串的引号后本身就是一个整数的字符串才能转换成整数
print(a, b, c)
转换成浮点型
- a = float(52) # 所有的整数都可以转换成浮点数
- b = float(True) # 布尔可以转换成浮点型
- c = float('131452') # 去掉引号后本身就是一个数字的字符串都可以转换成浮点型
转换成布尔类型
python中所有的数据都可以转换成布尔类型
结论:所有为空为零的值都会转换成False,其他的全是True
转换成字符串类型
结论:python中所有的数据都可以转换成字符串,转换的时候直接在外面加“ ' ”即可
练习:输入三个数字,求这三个数字的和
num1 = input('请输入第一个数字:')
num2 = input('请输入第二个数字:')
num3 = input('请输入第三个数字:')
sum = float(num1) + float(num2) + float(num3)
print(sum)
三、字符串的相关运算
字符串支持的运算符: + , * ,> , < , == , !=, >= , <=
python中的字符串支持数学运算符中的“+”和“*”,以及所有的比较运算符
1.数学运算符的应用“+”、“*”
-
a. + : 字符串1 + 字符串2 --> 将字符串1和字符串二拼接在一起产生新的字符串
new_str = 'abc' + '123'
print(new_str)
注意:只能是相同数据类型之间的相加,不能字符串和数字混合相加 -
b. * : 字符串 * N --> N个字符串重复N次产生新的字符串
new_str = 'abc'*2
print(new_str)
2.比较运算符的应用
-
a. == 和 != 可以判断两个字符串是否相等
-
b.比较大小(比的是从第一个字符开始依次往后的字符编码值的大小,编码值大则谁就大)
print('danb' > 'dahd')
练习:判断一个字符串中第三个字符是不是字母
str1 = 'dal232.fka42'
char = str1[2] 取出第三个字符
print('是否是字母:', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否是中文:', '\u4e00' <= char <= '\u9fa5') 判断取出的字符是不是中文
3.in 和 not in操作
- 字符串1 in 字符串2 --> 判断字符串2中是否包含字符串1(即判断字符串1是否是字符串2的子串)
- 字符串1 not in 字符串2 --> 判断字符串2中是否不包含字符串1(即判断字符串1是否不是字符串2的子串)
print('cc' in 'cc520') True
print('cc' in 'c c520') False
print('cc' not in 'cc520') False
print('cc' not in 'c c520') True
4.len函数
- len(序列) --> 获取序列的长度,获取序列中元素的个数
- len(字符串) --> 获取字符串的长度(字符的个数)
注意:一个转义字符的长度为1,一个编码字符的长度为1.
一个空格字符的长度为1,一般情况下手动在键盘上按一个tab键的长度是4(打印出来的内容和\t一样,但是打印的长度不同)
print(len('chener'))
str2 = input('请输入:')
last_char = str2[len(str2) - 1]
print(last_char)
四、格式字符串
========格式字符串=========
-
格式字符串就是在字符串中通过格式占位符来代替字符串中变化的部分,然后再后面通过数据或者变量确定变化
-
语法:
包含占位符的字符串 % (每个占位符对应的值,如:值1 ,值2 ,值3......) -
说明:
占位符 -- %s 字符串
%d 整数
%f 小数(%.Nf 保留小数点后N位小数)
%c 字符(可以直接将编码值穿换成字符放入字符串里面)
% -- 固定写法
() -- 固定写法,字符串中只有一个占位符的时候,这个()可以省略
括号里面的值 -- 值和占位符要一一对应(个数、类型、位置都要对应)
name = input('姓名:')
age = 18
sex = '女'
message = '我叫%s, 今年%d, 性别%s, 月薪%d' % (name, age, sex, 1314)
练习:输入一个字符串,用一个变量保存输入的字符串的相关信息:xxx的长度是x,最后一个字符是x
例如:输入abc --> abc的长度是3,最后一个字符是c
str3 = input('输入一个字符串:')
last_char = str3[len(str3) - 1]
message = '%s的长度是%d,最后一个字符是%c' % (str3, len(str3), last_char )
print(message)
五、字符串的内置函数
表中所有字符串相关方法的使用方式都是: 字符串.方法名()
1.capitalize()
字符串.capitalize() --> 将字符串的第一个字母变成大写(只有第一个字符为字母的时候才有效)
str = 'chener'
print(str.capitalize())
2.字符串对齐方式
- 字符串.center(width,fillchar) -- 居中,width(整数)决定新的字符串的长度,fillchar就是用来填充多出来的位置的"字符"
- 字符串.ljust(width,fillchar) -- 左对齐
- 字符串.rjust(width,fillchar) -- 右对齐
str1 = 'ai'
print(str1.center(10, '*'))
3.count
字符串1.count(字符串2) -- 在字符串1中统计字符串2出现的次数
print('wo ai ni'.count('ai'))
4.isalpha
字符串.isalpha() -- 判断字符串中是否全是字母或者数字
注意:非ASCII码表里面的字符检测不出来
print('fhaoho'.isalpha())
5.join
字符串1.join(字符串2) -- 将字符串1插入到字符串二中的每个字符之间
print('*'.join('aini'))
练习:
str = input('请输入您的入班序号:')
tishi = 'py1809' + str.rjust(4, '0')
print('您的学号为:', tishi)