"ValueError: list.index(x): x отсутствует в списке" в Python, но он существует

Я хочу использовать 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

Что не так с моим кодом?

2 ответа

Решение

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

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

Как примечание, вы можете проверить str.split() вместо или str.partition:

email_username, _, email_host = email.partition("@")

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

email_list = list(email)

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

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

email.split("@")[0]
Другие вопросы по тегам