如何使用Python索引与切片从字符串中提取指定目标文本
问题原因
你之前使用的myvar[:10]是从字符串索引0位置(也就是字符串最开头)截取前10个字符,拿到的是URL开头的https://m片段,完全没有定位到目标内容所在的位置,自然无法得到预期结果。
你的目标内容是URL中最后一个/之后、.pdf后缀之前的文件名部分,只要通过索引定位到这两个边界,再用切片截取中间内容即可。
实现方法
方法1:纯索引+切片实现(完全匹配你想用的索引、切片能力)
通过rfind()方法从字符串末尾反向查找边界字符的索引位置,再做切片:
myvar = 'https://mystorageacct.blob.core.windows.net/testcontainer/29112013 FDD_Exec Summary 29 Nov 2013.pdf' # 定位最后一个斜杠的位置,+1跳过斜杠,得到目标内容的起始索引 start = myvar.rfind('/') + 1 # 定位.pdf后缀的起始点位置,得到目标内容的结束索引 end = myvar.rfind('.pdf') grab = myvar[start:end]
执行后grab的值就是你需要的:
29112013 FDD_Exec Summary 29 Nov 2013
逻辑说明
rfind(字符)会从字符串尾部往前查找第一个匹配字符的索引,比从开头查找更适合定位URL最后一段的分隔符,不会被前面路径里的同名字符干扰。- Python切片规则是
字符串[起始索引:结束索引],截取范围包含起始索引对应的字符,不包含结束索引对应的字符,刚好匹配我们定位的两个边界。
方法2:拆分字符串实现(写法更简洁)
如果不需要严格只用基础索引切片,可以通过字符串拆分快速拿到结果:
# 按斜杠拆分字符串,取最后一段就是带后缀的文件名 full_filename = myvar.split('/')[-1] # 从末尾切掉4个字符长度的.pdf后缀,得到目标内容 grab = full_filename[:-4]
注意:
[:-4]的写法仅适用于后缀固定为full_filename.rsplit('.', 1)[0],兼容性更强。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

