Разрезание строки Python - PullRequest
2 голосов
/ 21 января 2012

Код:

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 ]

13 голосов
/ 21 января 2012

Вы пытаетесь использовать (oldcount, count) в качестве индекса к списку. Это кортеж, а не int.

Возможно, вы имеете в виду:

anagramlist.append(inwords[oldcount:count])

4 голосов
/ 21 января 2012

У вас неправильный синтаксис срезов. Код:

inwords[oldcount, count]

анализируется так же, как:

inwords[(oldcount, count)]

Вы не разделяете от oldcount до count, вы создаете кортеж oldcount и count и используете его в качестве строкового индекса.

Правильный синтаксис Python будет:

inwords[oldcount:count]
2 голосов
/ 21 января 2012

Вы просто пытаетесь сделать anagramlist = inwords.split()?
Если вы действительно хотите нарезать его вручную, вам придется использовать:

anagramlist.append(inwords[oldcount:count+oldcount])
0 голосов
/ 21 января 2012

Я думаю, что-то не так с (inwords[oldcount, count]). Вы не можете использовать (oldcount, count) в качестве индекса.

0 голосов
/ 21 января 2012

Если я понимаю ваш код, вы, вероятно, пытаетесь использовать обозначение среза, которое требует использования :, а не ,. Эта запятая заставляет интерпретатора понимать ваш код как использование кортежа в качестве индекса строки, что явно недопустимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...