Python 字符串的分片与索引,字符串可以通过 string[x]
的方式进行索引、分片,也就是加一个 []
。字符串的分片(slice) 实际上可以看作是从字符串中找出来你要截取的东西,复制出来一小段你要的长度,储存在另一个地方,而不会对字符串这个源文件改动。分片获得的每个字符串可以看作是原字符串的一个副本。
先来看下面这段代码。如果你对字符串变量后面一些莫名其妙的数字感到困惑和没有头绪的话,不妨对照着代码下面的这个表格来分析。
name = 'My Name is Mike'
print(name[0])
'M'
print(name[-4])
'M'
print(name[11:14]) # from 11th to 14th, 14th one is excluded
'Mik'
print(name[11:15]) # from 11th to 15th, 15th one is excluded
'Mike'
print(name[5:])
'me is Mike'
print(name[:5])
'My Na'
:
两边分别代表着字符串的分割从哪里开始,并到哪里结束。
以 name[11:14]
为例,截取的编号从第11个字符开始,到位置为14但不包含第14个字符结束。
而像 name[5:]
这样的写法代表着从编号为5的字符到结束的字符串分片。
相反, name[:5]
则代表着从编号为0的字符开始到编号为5但不包含第5个字符的字符分片。可能容易搞混,可以想象成第一种是从5到最后面,程序员懒得数有多少个所以就省略地写。第二种是从最前面到5,同样是懒得写0,所以就写成了 [:5]
。
好,现在我们试着解决一个更复杂的问题,来做一个文字小游戏叫做一一“找出你朋友中的魔鬼”。输入代码:
word = 'friends'
find_the_evil_in_your_friends = word[0] + word[2:4] + word[-3:-1]
print(find_the_evil_in_your_friends)
如果运行正常,你就会发现这样的答案:fiend
, 也就发现了朋友中的魔鬼,get到了吗?
再来看一个实际项目中的应用,同样是分片的用法。
'http://ww1.site.cn/14d2e8ejw1exjogbxdxhj20ci0kuwex.jpg'
'http://ww1.site.cn/85cc87jw1ex23yhwws5j20jg0szmzk.png'
'http://ww2.site.cn/185cc87jw1ex23ynr1naj20jg0t60wv.jpg'
'http://ww3.site.cn/185cc87jw1ex23yyvq29j20jg0t6gp4.gif'
在实际项目中切片十分好用。上面几个网址(网址经过处理,所以你是打不开的)是使用 Python 编写爬虫后,从网页中解析出来的部分图片链接,现在总共有500余张附有这样链接的图片要进行下载,也就是说我需要给这500张不同格式的图片(png.jpg,gif)以一个统一的方式进行命名。通过观察规律,决定以链接尾部倒数10个字符的方式进行命名,于是输入代码如下:
url = 'http://ww1.site.cn/14d2e8ejw1exjogbxdxhj20ci0kuwex.jpg'
file_name = url[-10:]
print(file_name)
你会得到这样的结果: 0kuwex.jpg