Из списка вытащить e-mail

Рейтинг: 0Ответов: 1Опубликовано: 16.07.2023

Имеется список со словами, необходимо вернуть электронный адрес.
Условия прописал, но выпадает ошибка TypeError:

list indices must be integers or slices, not str

код:

text = "мое мыло hot@mail.ru"
text = text.split()
for word in text:
    if text[word].count("@") == 1 and text[word][0] != "@" and text[word].count(".") > 0 and text[word].rfind(".") > text[word].find("@"):
        print(word)

Ответы

▲ -2Принят

Вы пытаетесь обратиться к элементам списка text по строковому индексу word, вместо целочисленного. В цикле for переменная word является элементом списка text, а не индексом

text = "мое мыло hot@mail.ru"
text = text.split()

for i in range(len(text)):
  word = text[i]
  if word.count("@") == 1 and word[0] != "@" and word.count(".") > 0 and word.rfind(".") > word.find("@"):
    print(word)

Можно так же использовать регулярные выражение

import re

text = "мое мыло hot@mail.ru"
email = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text)

if email:
    print(email[0])