Python字符串的截取是很常见的操作,一般来说固定长度的字符串截取比较容易,只需计算好字符串长度就行.而不固定长度会比较麻烦一些,会用到find查找功能.我们来看下具体要如何截取吧.
工具/原料
LenovoGOYA
windows10
Python3.8
方法/步骤
1、固定长度字符串的字符截取,示例1:”\\aaa\b\c”,要获取”aaa”这个值.只需取第2至第5位字符就行,输入代码:v_str=r"\\aaa\b\c"v_res=v_str[2:5]print('获取到的字符是:'+v_res)
2、不固定长度的字符串截取,示例闸拊福律2:在名字不固定的路径”\\abcdefg\hi\j\k”里,截取主目录”锾攒揉敫abcdefg”的值(注:主目录可能是”abc”,也可能是”abcd”).在一个不固定的变量里找字符,通常的思路是找到固定的东西,示例2里固定字符为”\\...\”.我们先找出固定的字符,第一个固定的是主目录前面的”\\”,我们先把前面两个字符排除,录入代码:v_str=r"\\abcdefg\hi\j\k"v_res=v_str[2:]print('获取到的字符是:'+v_res)
3、这个v_str变量里面固定的第二个字符是”\”,再试着用find把它找出来:v_str=r"\\abcdefg\hi\j\k"v_res=v_str[2:v_str.find("\\")]print('获取到的字符是:'+v_res)
4、结果很明显失败了.这是因为find每次搜殇矬岭柳索都是从第一个字符开始的.如果前面两个字符不是”\\”,而是”//”,我们想要的结果已经出来了多唉捋胝:v_str=r"//abcdefg\hi\j\k"v_res=v_str[2:v_str.find("\\")]print('获取到的字符是:'+v_res)
5、既然如此,我们借2个位搜索一下:v_str=r"\\abcdefg\hi\j\k"v_res=v_str[2:v_str[2:].find("\\")]print('获取到的字符是:'+v_res)
6、结果已经很接近了,只是后面少了2个字符.再把借来的位还回去,得到最终的结果:v_str=r"\\abcdefg\hi\j\k"v_res=v_str[2:v_str[2:].find("\\")+2]print('获取到的字符是:'+v_res)
7、好了,这种随机的不固定长度的亨蚂擤缚字符串截取方法已经知道了.再梳理一下思路:首先,我们知道固定长度的字符截取方法:v_霜杼厮贿str=r"\\abcdefg\hi\j\k"v_res=v_str[2:9]print('获取到的字符是:'+v_res)第一个数字2我已经知道,关键是第二个数字9怎么算出来?我们知道可通过find找到字符的索引值,在示例2里,固定的字符”\”有好多,排除掉前面两个后,得到第二个”\”的索引值:v_str=r"\\abcdefg\hi\j\k"print(v_str[2:].find("\\"))但是,这个数字7是在”abcdefg\hi\j\k”的索引值,完整的字符串应该是”\\abcdefg\hi\j\k”,所以我们还得+2.v_str=r"\\abcdefg\hi\j\k"print(v_str[2:].find("\\")+2)最后整合一下代码,结果就出来了:v_str=r"\\abcdefg\hi\j\k"v_res=v_str[2:v_str[2:].find("\\")+2]print('获取到的字符是:'+v_res)