我有一个test = bcdefaghijklmnaopqrstuavasdfawefafw
我试图找到一个字符串的长度,直到它遇到第一个'a',即len(bcdef)= 5.
我想知道是否有一个简单的内置函数可以做到这一点?
到目前为止我所拥有的是len(test.partition('a')[0])
,但我想知道是否有更简单的方法可以做到这一点。
感谢。
答案 0 :(得分:2)
len(test.partition('a')[0])
确实很复杂& underperformant。
我将str.index
与异常捕获一起使用,以防字母不在字符串中,在这种情况下,函数可以返回-1
例如(或者长度为字符串,它是一种惯例。str.find
在找不到子字符串时返回-1
。
s="bcdefaghijklmnaopqrstuavasdfawefafw"
def slen(s,c):
try:
return s.index(c)
except ValueError:
return -1 # could return len(s)
(str.index
返回字符串中第一个出现的char / substring的位置,如果不存在则抛出异常)
替代方法:使用s.find("a")
,它完全相同,没有处理异常的麻烦(当找不到时返回-1
)
答案 1 :(得分:2)
您可以使用str.index("a")
或str.find("a")
。
两者都返回角色第一次出现的索引。
它们之间的区别是index()
如果找不到该字符则会引发错误。找不到字符时,find()
返回-1。使用哪一个取决于您的用例。
答案 2 :(得分:0)
您使用索引+ 1
索引返回特定字符的索引(或字符串的长度,直到特定字符-1)
test = "bcdefaghijklmnaopqrstuavasdfawefafw"
len = test.index('a')+1