«ValueError: list.index(x): x not in list» в Python, но он существует

Вопрос: Я хочу использовать Python, чтобы вытащить имя пользователя из адреса электронной почты. Решение, о котором я думал, заключается в том, чтобы добавить адрес электронной почты в список, найти индекс символа @, а затем нарезать список, пока не найду индекс. Мой код: #!/usr/bin/env python email = raw_input("Please enter your e-mail address: ") email_list = []

Вопрос:

Я хочу использовать Python, чтобы вытащить имя пользователя из адреса электронной почты. Решение, о котором я думал, заключается в том, чтобы добавить адрес электронной почты в список, найти индекс символа @, а затем нарезать список, пока не найду индекс.

Мой код:

#!/usr/bin/env python<br/> email = raw_input(«Please enter your e-mail address: «) email_list = [] email_list.append(email) at_symbol_index = email_list.index(«@») email_username = email_list[0:at_symbol_index] print email_username

Но каждый раз, когда я запускаю скрипт, он возвращает ошибку:

ValueError: list.index(x): x not in list

Что случилось с моим кодом?

Лучший ответ:

Причина этого заключается в том, что вы создаете список, содержащий строку, поэтому, если строка не указана «@», то ее нет в списке.

Чтобы исправить это, просто не добавляйте адрес электронной почты в список. Вы можете выполнять эти операции непосредственно в строке.

В качестве примечания вы можете захотеть проверить str.split() вместо этого или str.partition:

email_username, _, email_host = email.partition(«@») Ответ №1

Вы добавляете весь адрес электронной почты в список. Возможно, вы имели в виду

email_list = list(email)

который добавляет символы email (в отличие от всей строки сразу). Но даже это необязательно, так как строки можно нарезать/индексировать так же, как списки (так что в этом случае вам не нужен список вообще).

Более простой способ определить имя пользователя для адреса электронной почты, вероятно, будет

email.split(«@»)[0]

Оцените статью
Добавить комментарий