Day4 字符串
程序员文章站
2022-03-01 13:05:14
...
1. 获取字符串中的字符
-
获取单个字符
字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
下标从0开始依次增加的,0对应的是第一个字符;也可以是从-1开始依次减少,-1代表最后一个字符。
例如'hello' -> h->0 e->1 l->2 l->3 o->4
-> h->-5 e->-4 l->-3 l->-2 o->-1
范围:(0-len-1),(-1 ~ -len)- 获取单个字符的语法:字符串[下标] - 获取字符串中指定下标对应的字符
- 说明:字符串 - 只要是字符串的表达式都可以;[] - 固定写法;下标 - 需要获取的字符对应的下标;下标不能越界
str1 = 'I Love You' len1 = len(str1) print(len1, str1[-5], 'I Love You'[-5 + len1]) """ print(str1[11]) IndexError: string index out of range 数组下标越界 """
-
获取部分字符(字符串切片)
- 方法1:
- 语法:字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下标前为止。每次下标值加上步长
-
说明:
字符串 - 只要是字符串的表达式都可以,例如:字符串字面量,字符串变量
[::] - 固定写法
开始下标、结束下标 - 下标值(这儿的下标可以越界)
步长 - 必须是整数,整数和负数都可以,如果步长是正,是从开始下标从前往后获取,反之,则相反 -
注意:
当步长为正,要求开始下标对应的字符的位置,必须在结束下标对应的字符的位置的前面,否则结果为空
当步长为负,要求开始下标对应的字符的位置,必须在结束下标对应的字符的位置的后面,否则结果为空
结束下标一定取不到
print(str1[0:9:1]) print(str1[-1:-10:-1]) print(str1[9:0:-1]) print(str1[-10:-1:1]) print(str1[-1:-100:-1]) print(str1[100:-100:-1])
-
方法2:(省略步长)
字符串[开始下标:结束下标]-->默认步长为1:从开始下标到结束下标前为止,一个一个的取 -
方法3:(省略开始下标和结束下标)
- 省略开始下标
字符串[:结束下标:步长(可省略)]
当步长为整数,从字符串的第一个字符开始取到结束下标前为止;
当步长为负数,从字符串的最后一个字符开始到结束下标前为止; - 省略结束下标
字符串[开始下标::步长(可省略)]
当步长为整数,从字符串的开始下标开始取到字符串最后一个字符为止;
当步长为负数,从字符串的开始下标开始取到字符串的第一个字符为止;
- 省略开始下标
print(str1[:6], str1[:6:-1], sep=',') print(str1[2:], str1[2::-1], sep=',') print(str1[::-1]) #字符串倒序 print(str1[-1::-1]) print(str1[:-len(str1) - 1: -1])
- 方法1:
2. 字符串的相关运算
-
字符串支持的运算符:+, *, >, <, ==, !=, >=, <=
python中的字符串支持数学运算符中的+和 *,以及所有的比较运算符
a. +: 字符串1 + 字符串2 - 将字符串1和字符串2拼接在一起
注意:字符串不能和数字混合相加!
b. *: 字符串 * N - N是正整数;字符串重复N次,产生一个新的字符串
c. 比较是否相等:==,!=: 可以判断两个字符串是否相等或者不等new_str = 'abc' + '123' print(new_str) name = '张三' message = '吃了没' print(name + message) print('abc' * 3)
d. 字符比较大小: 从第一个字符开始依次往后找,找到第一个不相等的字符对,判断他们的编码值的大小,编码值大,对应的字符串就大,就不在往后比较了
应用:- 判断是否是小写字母: 'a' <= char1 <= 'z' <==> char1 >= 'a' and char1 <= 'z'
- 判断是否是大写字母: 'A' <= char1 <= 'Z' <==> char1 >= 'A' and char1 <= 'Z'
print('abc' == 'abc') print('abc' == 'bac') print('abc' != 'abc') print('dcb' > 'abcde') (#) 判断一个字符串中的第三个字符是否是字母 str1 = 'shk23.s哎y23' char1 = str1[2] print('a' <= char1 <= 'z' or 'A' <= char1 <= 'Z') print('是否是中文:', '\u4e00' <= str1[-4] <= '\u9fa5')
-
in 和 not in操作:
字符串1 in 字符串2 -> 判断字符串1是否在字符串2里,判断字符串1是否是字符串2的子串
字符串1 not in 字符串2 -> 判断字符串1是否不在字符串2里,判断字符串1是否不是字符串2的子串print('abc' in 'hello abc') #True print('abc' in 'ahello bc') #False
-
len()函数:
len(序列) - 获取序列长度、获取序列中元素的个数
len(字符串) - 获取字符串的长度(字符的个数)
注意:
1.一个可以转义的转义字符的长度是1
2.一个编码字符的长度是1
3.一个空格字符的长度1
4.手动在键盘上按一个tab,一般是4个空格,长度为4;一个\t表示的tab,长度为1str1 = ' abc' print(str1) print(len(str1)) str2 = '\tabc' print(str2) print(len(str2))
3. 格式字符串
-
什么是格式字符串:
在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化 -
语法:
包含占位符的字符串加%(每个占位符对应的值1,值2,值3,...) -
占位符
%s %d %f %c(将数字对应的编码转换为字符),(%.nf) -> 保留小数点后n位小数
% - 固定写法
() - 固定写法,字符串中只有一个占位符的时候可以省略
括号中的值 - 值和占位符要一一对应,个数,类型,位置都要对应name = input('姓名:') age = 18 sex = '男' salary = float(input('年薪:')) message = '我叫%s,今年%d岁,性别:%s,月薪%.2f万,%c' % (name, age, sex, salary,98) print(message)
4. 类型转换
-
语法:
类型名(数据) - 将制定数据转换为指定类型
说明:
类型名 - 任何python支持的,或者自定义的类型都可以
数据 - 需要转换的对象(类型不同要求可能不一样) -
转换实例:
int(数据) --> 将其他数据转换成整型
float(数据) --> 将其他数据转换为浮点型
bool(数据) --> 将其他类型转换成布尔- 转换成整型
a = int(12.8) b = int(True) c = int('13') print(a) #直接保留整数部分,而不是四舍五入 print(b) #布尔可以转换成整数,True为1,False为0 print(c) #本身只有数字的整数的字符串可以转换成为整型
- 转换为浮点型
a = float(12) #所有整数都可以转换为浮点型,在后面加 .0 b = float(True) #True 1.0 False 0.0 c = float('12.9')#去掉引号后,本身只要是数字就可以转换 print(a,b,c)
- 转换为布尔类型:python中所有的数据可以转换为布尔
a = bool(100) #所有为0 空的值都为False b = bool(0.0) c = bool('') d = bool([]) e = bool({}) f = bool(None) print(a, b, c, d, e, f)
- 转换成字符串类型
python中所有的数据都可以转换趁该字符串,而且转换的时候就是单纯的在最外面加引号
- 转换成整型
下一篇: android Handler机制详解