字符串结尾的字符索引

时间:2014-10-07 01:19:37

标签: python

我知道要从字符串的末尾获取字符的索引,你可以:

    str.index(sub, -1)

那么为什么这个代码在我调用它时会产生错误?

    def test(string):
        for letter in string:
            print string.index(letter, -1) 

感谢。

2 个答案:

答案 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")

将为您提供正确的索引,而不会引发异常。

如果您 需要字符串末尾的索引(以便e0a4),一些简单的数学操作就可以做到:

def test(string):
    for letter in string:
        print len(string) - string.index(letter, 0) - 1
test("abcde")

此代码为您提供字母ae

4
3
2
1
0

答案 1 :(得分:0)

在这里阅读http://www.tutorialspoint.com/python/string_index.htmhttps://docs.python.org/2/library/string.html#string.find

它没有在你指定的位置找到它 无论如何,尝试抓住它并看到错误。