如何获取字符串首次出现指定字符前的长度?求更简便的内置方法
解答
嘿,这个需求其实有个更直接的内置函数可以搞定——str.find()!
你当前用的test.partition('a')[0]确实能实现需求,但find()可以一步到位得到你想要的长度:
test = "bcdefaghijklmnaopqrstuavasdfawefafw" length = test.find('a') print(length) # 输出 5
为什么这个方法更简便?
str.find(sub)会直接返回子串sub首次出现的起始索引,而因为索引从0开始,这个索引值刚好就是该字符之前所有字符的长度(比如你的例子里'a'出现在索引5,前面正好有5个字符)。- 对比你原来的方法:不需要先分割字符串生成新的子串,再调用
len()计算长度,一步就能得到结果,代码更简洁高效。
边界情况处理
如果不确定字符串中是否存在'a',find()会返回-1,这时候可以和原方法的行为对齐(返回整个字符串的长度):
length = test.find('a') if 'a' in test else len(test)
如果能确定'a'一定存在于字符串中,直接用test.find('a')就足够了。
另外还有个str.index()方法,它和find()的功能类似,但如果找不到目标字符会抛出ValueError,所以如果你的场景里字符必然存在,也可以用它,但find()的容错性更好。
内容的提问来源于stack exchange,提问作者Carol Ward
相关产品推荐
相关产品推荐

