Python字符串切片

时间:2012-01-20 22:52:31

标签: python list indexing

代码:

count = 0
oldcount = 0
for char in inwords:
    if char == " ":
        anagramlist.append(inwords[oldcount, count])
        oldcount = count
        count = 0
    else:
        count += 1

错误:

Traceback (most recent call last):
  File "C:/Users/Knowhaw/Desktop/Python Programs/Anagram solver/HTS anagram.py", line 14,        
in <module>
    anagramlist.append(inwords[oldcount, count])
TypeError: string indices must be integers

到底是怎么回事? count和oldcount显然是整数,但错误表明它们不是

我甚至可以写

anagramlist.append(inwords[int(oldcount), int(count)])

并获得相同的错误

5 个答案:

答案 0 :(得分:13)

您尝试使用(oldcount, count)作为列表的索引。这是一个元组,而不是int。

你或许是指:

anagramlist.append(inwords[oldcount:count])

答案 1 :(得分:4)

您的切片语法错误。代码:

inwords[oldcount, count]

解析与:

相同
inwords[(oldcount, count)]

您没有从oldcount切换到count,您正在创建oldcountcount的元组并将其用作字符串索引。

正确的Python切片语法是:

inwords[oldcount:count]

答案 2 :(得分:2)

您是否只是想anagramlist = inwords.split()? 如果你真的想手动切片,你将不得不使用:

anagramlist.append(inwords[oldcount:count+oldcount])

答案 3 :(得分:0)

如果我理解您的代码,您可能会尝试使用切片表示法,这需要使用:,而不是,。该逗号使解释器将您的代码理解为使用元组作为字符串的索引,这显然是不允许的。

答案 4 :(得分:0)

我认为(inwords[oldcount, count])出了点问题。您不能将(oldcount, count)用作索引。