本文目录导读:

我来为你详细讲解Python字符串切片的实用案例。
基本语法
string[start:stop:step] # start: 起始索引(包含) # stop: 结束索引(不包含) # step: 步长(默认为1)
常用截取案例
基础截取
text = "Hello Python World" # 截取前5个字符 print(text[:5]) # Hello # 截取从索引6开始到结尾 print(text[6:]) # Python World # 截取中间部分 print(text[6:12]) # Python # 截取最后6个字符 print(text[-6:]) # World
实际应用场景
# 场景1:提取文件扩展名
filename = "report_2024.pdf"
extension = filename[-4:] # .pdf
print(f"文件类型: {extension}")
# 场景2:提取用户邮箱域名
email = "zhangsan@example.com"
domain = email[email.index("@"):]
print(f"邮箱域名: {domain}") # @example.com
# 场景3:获取日期部分
datetime_str = "2024-01-15 14:30:00"
date_part = datetime_str[:10]
print(f"日期: {date_part}") # 2024-01-15
字符串反转与步长应用
text = "Python" # 字符串反转 print(text[::-1]) # nohtyP # 每隔一个字符取一个 print(text[::2]) # Pto # 反向每隔一个字符 print(text[::-2]) # nhy # 从第1个到第6个,步长为2 print(text[1:6:2]) # yhn
实用数据清理案例
# 场景1:清理空格和特殊字符
data = " Hello, World! "
# 去掉首尾空格
clean = data.strip()
# 提取World
world = clean[-6:-1] # World
print(f"清理后的数据: {world}")
# 场景2:提取电话号码区号
phone = "010-88888888"
area_code = phone[:3]
print(f"区号: {area_code}") # 010
# 场景3:提取完整域名中的主域名
url = "https://www.example.com/blog"
main_domain = url.split("//")[-1].split("/")[0] # www.example.com
print(f"主域名: {main_domain}")
复杂字符串处理
# 场景1:处理身份证号
id_card = "110101199001011234"
birthday = f"{id_card[6:10]}-{id_card[10:12]}-{id_card[12:14]}"
print(f"出生日期: {birthday}") # 1990-01-01
# 场景2:隐藏敏感信息
card_number = "6222 0219 8834 5678"
masked = card_number[-4:] # 只显示后4位
hidden = "**** **** **** " + masked
print(f"隐藏后: {hidden}") # **** **** **** 5678
# 场景3:标准化手机号
phone = "13812345678"
formatted = f"{phone[:3]}-{phone[3:7]}-{phone[7:]}"
print(f"格式化: {formatted}") # 138-1234-5678
处理
# 注意:中文在Python3中也支持索引
text = "Python编程入门教程"
# 提取特定位置
print(text[:6]) # Python
print(text[6:8]) # 编程
print(text[-2:]) # 教程
# 处理中文文件名
filename = "2024年1月报告_v2.docx"
version = filename[filename.rindex("_"):].split(".")[0] # _v2
print(f"版本号: {version}") # _v2
| 操作 | 语法 | 示例 | 结果 |
|---|---|---|---|
| 前n个 | [:n] |
"Hello"[:3] |
Hel |
| 后n个 | [-n:] |
"Hello"[-3:] |
llo |
| 中间段 | [start:end] |
"Hello"[1:4] |
ell |
| 反转 | [::-1] |
"Hello"[::-1] |
olleH |
| 跳步取 | [::step] |
"Hello"[::2] |
Hlo |
注意事项:
- 索引从0开始计数
- 切片范围
[start:stop]不包含stop位置 - 负索引从-1开始,表示最后一个元素
- 索引超出范围会返回空字符串,不会报错
这些案例覆盖了大多数日常开发中的字符串截取需求,可以根据实际情况灵活调整。