我知道要从字符串的末尾获取字符的索引,你可以:
str.index(sub, -1)
那么为什么这个代码在我调用它时会产生错误?
def test(string):
for letter in string:
print string.index(letter, -1)
感谢。
答案 0 :(得分:1)
我知道要从字符串末尾获取字符的索引,...
我认为你可能会在这里感到困惑,不从字符串的末尾获取索引,它从字符串的 start 获取索引,但是只从给定的索引开始搜索。
如果您输入并运行以下代码,这一点就很明显了:
def test(string):
for letter in 'e':
print string.index(letter, -1)
test("abcde")
并且您正确地将4
作为输出,从字符串开始e
的位置。
在你的代码(和上面的例子)中,我们告诉它从索引-1
开始搜索 substring ,这只是字符串中的最后一个字符。
因此,如果您的字符串为"abc"
,它将首先在子字符串a
中查找"c"
,并且找不到它,将引发异常。
将您的代码更改为:
def test(string):
for letter in string:
print string.index(letter)
test("abcde")
将为您提供正确的索引,而不会引发异常。
如果您 需要字符串末尾的索引(以便e
为0
且a
为4
),一些简单的数学操作就可以做到:
def test(string):
for letter in string:
print len(string) - string.index(letter, 0) - 1
test("abcde")
此代码为您提供字母a
到e
:
4
3
2
1
0
答案 1 :(得分:0)
在这里阅读http://www.tutorialspoint.com/python/string_index.htm或https://docs.python.org/2/library/string.html#string.find
它没有在你指定的位置找到它 无论如何,尝试抓住它并看到错误。