TypeError для необязательного параметра start в string.find () - PullRequest
0 голосов
/ 16 сентября 2011

У меня возникли проблемы с пониманием, как это происходит.Когда я запускаю следующее:

def find_in_string(string, ch):
    count = 0
    index = 0
    while 0 <= index < len(string):
        if string.find(string, ch, index) != -1:
            return True

find_in_string('asdfasdf', 's')

Вот что я получаю:

TypeError: slice indices must be integers or None or have an __index__ method

Однако, запустив это через интерпретатор, вот так:возвращает «True».Так что я не понимаю, как string.find не передается целое число для начального индекса в вышеупомянутой функции.Любой совет приветствуется!

РЕДАКТИРОВАТЬ: По любой причине, вышеупомянутая функция теперь работает после импорта строки снова.Возможно, слишком много кофе?

1 Ответ

1 голос
/ 16 сентября 2011

Кажется, ваше недоразумение связано с импортом модуля string, а также с присвоением имени вашей переменной string.

Вам не нужно импортировать модуль, чтобы использовать find, и вы можете назвать свою переменную как-нибудь еще, если вам нужно импортировать модуль, чтобы сделать что-то еще.

Тип str, а не string.

find так не работает. Вы имеете в виду

string.find(ch) # ', index' if you want

если ваша переменная называется string или

str.find(string, ch) # ', index' if you want

если ваша переменная имеет имя string и вы действительно хотите получить к ней доступ в классе / типе str (без причины).

Вы вызываете find в строке, в которой вы ищете, вы не передаете строку в find вручную, если вы не используете find в классе / типе. Первым аргументом find, переданным вручную, является искомая строка, за которой следуют индексы start и end. Поскольку вы, похоже, ищете всю строку, их можно опустить.

...