【索引取值语法】
字符串索引取值由3部分构成:
【代码示例】
# 将字符串ABCDEFG赋值给变量string
string = 'ABCDEFG'
# 取字符串的第1个元素
# 变量名string ;英文中括号;索引为0
print(string [0])
【终端输出】
A
索引取值可以从字符串中取出1个字符。
如果要从字符串中取出多个字符,可以用字符串的切片方法。
【备注】上述图片来自关东升的《看漫画学Python》。
【语法】
字符串[star:end:step]
字符串[开始字符:结束字符:步长]
字符串切片取值由4部分构成:
字符串变量名或者字符串本身。
英文中括号。
3个参数。
3个参数之间用英文冒号分隔。
参数start:表示要取的第1字符的索引(包括该字符),如果不指定,则默认为0
。
参数end:表示要取的最后一个字符的索引(不包括该字符),如果不指定,则默认为字符串的长度。
参数step:表示切片的步长。如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。
步长我的理解就是向前或向后走几步,可以是正整数,也可以是负整数。
步长为1,表示向前走1步,那就是依次取值。
步长为2,表示一次性向前走2步,那就是要跳过1个字符。
步长为-2,表示一次性向后退2步,即从右往左跳过1个字符。
【重点提示】切片取值时包括开始字符,不包括结束字符,简单记忆为含前不含后
。
# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"
# 从第3个字符开始,第7个字符结束,步长为1
print(a[2:6:1])
【终端输出】
滚烫你是
【2:6:1代码解析】
start=2即开始字符的索引为2,索引2对应字符串的第3个元素,即字符滚
。
end=6即结束字符的索引为6,索引6对应字符串的第7个元素,即字符人
。
step=1即字符串间隔为1,间隔为1表示向前走一步,中间不用跳过字符。
含前不含后
即取前面的字符滚
,不取后面的字符人
。
因此取到的值为滚烫你是
。
【步长为1时可以省略不写】
# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"
# 从第3个字符开始,第7个字符结束,步长为1
print(a[2:6])
【终端输出】
滚烫你是
上述代码省略了步长,因此默认步长为1。
【温馨提示】当省略步长时,最后一个冒号也可以省略。
# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"
# 从第3个字符开始,第7个字符结束,步长为2
print(a[2:6:2])
【终端输出】
滚你
【2:6:2代码解析】
start=2即开始字符的索引为2,索引2对应字符串的第3个元素,即字符滚
。
end=6即结束字符的索引为6,索引6对应字符串的第7个元素,即字符人
。
step=2即字符串间隔为2,间隔为2表示一次性往前走2步,取值时跳过1个字符。
含前不含后
即取前面的字符滚
,不取后面的字符人
。
因此取到的值为滚你
。
# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"
# 默认索引从0开始
print(a[:6])
【终端输出】
星河滚烫你是
【:6代码解析】
冒号前没有数字,表示省略开始索引。
数字6后面没有冒号和数字,表示省略步长。
start=0,没有开始索引,索引默认从0开始,索引0对应的字符串的第1个字符,即字符星
。
end=6即结束字符的索引为6,索引6对应字符串的第7个元素,即字符人
。
step=1即字符串间隔为1,间隔为1表示向前走一步,中间不用跳过字符。
含前不含后
即取前面的字符星
,不取后面的字符人
。
因此取到的值为星河滚烫你是
。
# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"
# 没有结束索引,默认到整个字符串结尾
print(a[6:])
【终端输出】
人间理想
【6:代码解析】
冒号后面没有数字表示省略结束索引,默认步长为1。
start=6即开始字符的索引为6,索引6对应字符串的第7个元素,即字符人
。
end:如果不指定,则默认为整个字符串的长度。
step=1即字符串间隔为1,间隔为1表示向前走一步,中间不用跳过字符。
【温馨提示】结束索引默认的情况下可以取到字符串的最后一个字符。
因此取到的值为人间理想
。
# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"
# 从倒数第2个字符开始,到正数第3个字符结束;步长为-2
print(a[-2:2:-2])
【终端输出】
理人你
【-2:2:-2代码解析】
start=-2即开始字符的索引为-2,索引-2对应字符串的倒数第2个元素,即字符理
。
end=2即结束字符的索引为2,索引2对应字符串的第3个元素,即字符滚
。
step=-2即字符串间隔为-2,间隔为-2表示一次性往后退2步,取值时跳过1个字符。
步长为负数表示从右往左走。
因此取到的值为理人你
。
【练习1】
中国居民身份证号码中的前2位数字代表省份。
取出代表省份的前2位数。
# 将身份证号码赋值给变量id_card
id_card = "533001199901013029"
# 方法1:开始索引为0,结束索引为2,取字符串的第1和第2个字符
print(id_card[0:2])
# 方法2:开始索引为0可以不写
print(id_card[:2])
【终端输出】
53
53
【练习2】
取出身份证号码中的出生年月日。
# 将身份证号码赋值给变量id_card
id_card = "533001199901013029"
# 方法1:开始索引为6,结束索引为14
print(id_card[6:14])
# 方法1:开始索引为-12,结束索引为-4
print(id_card[-12:-4])
【终端输出】
19990101
19990101
【取值技巧】
前加1,后不变
前加1,后不变
前加1,后不变
【例如】
【0:2】表示取第1个到第2个字符。
【1:5】表示取第2个到第5个字符。