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