You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取字符串首次出现指定字符前的长度?求更简便的内置方法

解答

嘿,这个需求其实有个更直接的内置函数可以搞定——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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:39:56