1.获取单个字符
字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
下标是从0开始依次增加, 0对应的是第一个字符(0 —— 字符串长度 - 1)
也可以是从-1开始依次减少,-1代表最后一个字符(-1 —— -字符串长度)
例如:'hello' -> h -> (0, -5) e -> (1, -4) l -> (2, -3) l -> (3, -2) o -> (4, -1)
'\tpytho\u4e00n' -> p -> (1, -7)
a.语法
字符串[下标] - 获取字符串中指定下标对应的字符
b.说明:
字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
[] - 固定写法
下标 - 需要获取的字符对应的下标;注意:这儿的下标不能越界
示例:
result = 'how are you!'[0] # 获取字符串'how are you!'中下标是0的字符,并且赋给变量result
print(result)
print('how are you!'[-1]) # !
# print('how are you!'[12]) 报错:IndexError: string index out of range
str1 = 'good good study! day day up!'
print(str1[10], str1[-18])
2.获取部分字符(字符串切片)
方法一:
a.语法:
字符串{开始下标:结束下表:步长] - 从开始下标开始,获取到结束下标前为止。每次下标值加上步长去获取下一个
b.说明:
字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
[] - 固定写法
开始下标、结束下标 - 下标值(这儿的下标可以越界)
步长 - 必须是整数(正数和负数都行);
如果步长是正数,是从开始下标开始从前往后获取;
如果步长是负数,是从开始下标开始从后往前获取
c.注意:
当步长为正,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置的前面,否则结果是空串!
当步长为负,要求开始下标对应的字符的位置必须在结束下标对应的字符的位置的后面,否则结果是空串!
不管怎么取,结束下标一定取不到 !
示例:
str1 = 'hello python!'
print(str1[0:4:1]) # 从前往后取
print(str1[6:0:-2]) # 从后往前取
print(str1[-1:-100:-1]) # 结束下标越界
print(str1[100:-100:-1]) # 下标越界
练习: 获取一个字符串中所有下标是奇数的所有字符(顺序)
str1 = 'hello world!'
print(str1[1:100:2])
str2 = "{'name':'小明', 'age': 18}"
print(str2[1:-1:1])
方法二:(省略步长)
字符串[开始下标:结束下标] - 步长是1;从开始下标到结束下标前为止一个一个的取!
示例:
print('when i was young!'[2:6])
方法三:(省略开始下标和结束下标)
a.省略开始下标
字符串[:结束下标:步长] - 当步长是正数,从字符串的第一个字符开始取到结束下标前为止;
当步长是负数,从字符串的最后一个字符开始取到结束下标前为止
b.省略结束下标
字符串[开始下标::步长] - 当步长是正数,从开始下标开始取到字符串最后一个字符为止;
当步长是负数,从开始下标开始取到字符串的第一个字符为止
示例:
str3 = 'when i was young!'
print(str3[:6], str3[:6:-1])
print(str3[2:], str3[2::-1])
print(str3[:])
print(str3[::-1]) # 让字符串倒序
print(str3)
1.字符串支持的运算符: +, *, >, <, ==, !=, <=, >=
python中的字符串支持数学运算符中的+和*,以及所有的比较运算符
a. + : 字符串1 + 字符串2 - 将字符串1和字符串2拼接在一起产生一个新的字符串
注意:字符串和数字不能混合相加!
示例:
new_str = 'abc' + '123'
print(new_str)
name = '张三'
message = '吃饭了吗?'
print(name + ',' + message)
# print('abc' + 123) 报错:TypeError: can only concatenate str (not "int") to str
b. * : 字符串 * N - N是正整数;字符串重复N次产生一个新的字符串
示例:
new_str = 'abc' * 3
print(new_str)
print(('abc' + '123') * 2) # 结果为abc123abc123
c.比较是否相等
==, != 可以判断两个字符串是否相等或者不相等
示例:
print('abc' == 'abc') # 结果为True
print('abc' == 'cba') # 结果为False
print('abc' != 'abc') # 结果为False
d.字符串比较大小: 从第一个字符开始依次往后找,找到第一个不相等的字符对,
判断它们编码值的大小,谁的编码值大,对应的字符串就大;不会再往后比较了!
应用:
1.判断是否是小写字母: 'a' <= char <= 'z' <===> char >= 'a' and char <= 'z'
2.判断是否是大写字母: 'A' <= char <= 'Z' <===> char >= 'A' and char <= 'Z'
3.判断是否是字母: 'a' <= char <= 'z' or 'A' <= char <= 'Z'
print('abdcb' > 'abcde')
print('abdcb' > 'zbcde')
判断一个字符串中第三个字符是否是字母
str1 = 'shk23.ssy23'
char = str1[2] # 将第3个字符取出
print('是否是字母', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否是中文', '\u4e00' <= char <= '\u9fa5')
2. in和not in操作
字符串1 in 字符串2 -> 判断字符串2中是否包含字符串1(判断字符串1是否是字符串2的子串)
print('abc' in 'hello abc') # True
print('abc' in 'ahello bc') # False
字符串1 not in 字符串2 -> 判断字符串2中是否不包含字符串1
print('abc' not in 'hello abc') # False
print('abc' not in 'ahello bc') # True
3. len函数
len(序列) - 获取序列长度,获取序列中元素的个数
len(字符串) - 获取字符串的长度(字符的个数) -- 结果是一个整数
注意:
一个可以转义的转义字符的长度是1!
一个编码字符的长度是1!
一个空格字符的长度是1!
手动在键盘上按一个tab,一般是4个空格,长度是4; 一个\t来表示的tab,长度是1!
print(len('abc'))
str1 = input('请输入:')
last_char = str1[len(str1) - 1] # 获取输入的字符串中的最后一个字符
print(last_char)
str1 = ' abc'
str2 = '\tabc'
print(str1)
print(str2)
print(len(str1), len(str2)) # 手动输入的tab和\t对应的字符个数可能不一样! \t永远是1
网友评论