python之字符串的切片操作

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

  • 切片 方法适用于 字符串列表元组

    • 切片 使用 索引值 来限定范围,从一个大的 字符串切出 小的 字符串

    • 列表元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据

    • 字典 是一个 无序 的集合,是使用 键值对 保存数据

python之字符串的切片操作_第1张图片

 

字符串[开始索引:结束索引:步长]

注意

  1. 指定的区间属于 左闭右开[开始索引, 结束索引) => 开始索引 >= 范围 < 结束索引

    • 起始 位开始,到 结束位的前一位 结束(不包含结束位本身)

  2. 从头开始,开始索引 数字可以省略,冒号不能省略

  3. 到末尾结束,结束索引 数字可以省略,冒号不能省略

  4. 步长默认为 1,如果连续切片,数字和冒号都可以省略

索引的顺序和倒序

  • 在 Python 中不仅支持 顺序索引,同时还支持 倒序索引

  • 所谓倒序索引就是 从右向左 计算索引

    • 最右边的索引值是 -1,依次递减

演练需求

    1. 截取从 2 ~ 5 位置 的字符串

    1. 截取从 2 ~ 末尾 的字符串

    1. 截取从 开始 ~ 5 位置 的字符串

    1. 截取完整的字符串

    1. 从开始位置,每隔一个字符截取字符串

    1. 从索引 1 开始,每隔一个取一个

    1. 截取从 2 ~ 末尾 - 1 的字符串

    1. 截取字符串末尾两个字符

    1. 字符串的逆序(面试题)

答案

num_str = "0123456789"
​
# 1. 截取从 2 ~ 5 位置 的字符串
print(num_str[2:6])
​
# 2. 截取从 2 ~ `末尾` 的字符串
print(num_str[2:])
​
# 3. 截取从 `开始` ~ 5 位置 的字符串
print(num_str[:6])
​
# 4. 截取完整的字符串
print(num_str[:])
​
# 5. 从开始位置,每隔一个字符截取字符串
print(num_str[::2])
​
# 6. 从索引 1 开始,每隔一个取一个
print(num_str[1::2])
​
# 倒序切片
# -1 表示倒数第一个字符
print(num_str[-1])
​
# 7. 截取从 2 ~ `末尾 - 1` 的字符串
print(num_str[2:-1])
​
# 8. 截取字符串末尾两个字符
print(num_str[-2:])
​
# 9. 字符串的逆序(面试题)
print(num_str[::-1])
​

练习

利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:

def trim(s):
    while s[:1] == ' ':
        s = s[1:]
​
    while s[-1:] == ' ':
        s = s[:-1]
​
    while s[:] == ' ':
        s = ''
    return s
​
​
if trim('hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello') != 'hello':
    print('测试失败!')
elif trim('  hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello  world  ') != 'hello  world':
    print('测试失败!')
elif trim('') != '':
    print('测试失败!')
elif trim('    ') != '':
    print('测试失败!')
else:
    print('测试成功!')

你可能感兴趣的:(Python)