"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]