Чтобы прочитать слово из файла, надо применить
readlines()
.
Print()
не нужен, потому что функция не возвращает ответ, а печатает его сама.
with open('1word.txt', 'r') as f:
for line in f.readlines():
ya_dict (line.strip())
strip()
нужен чтобы удалить знаки переноса строки.
text = word_tr
бессмысленная строка. Или сразу называйте переменную
text
или передавайте в ссылку
word_tr
.
eval()
не нужен. Он выполняет код, переданный ему в виде строки. Например:
eval('print("text")')
напечатает
text
, как будто
'print("text")'
не строковая переменная, а команда.
После строки содержащей
uri =
лучше написать так:
r = requests.post(uri) # делаем запрос к яндексу
data = json.loads(r.text) # конвертируем строку json в словарь
word_list = data["def"][0]["tr"] # получаем список
for word in word_list:
print(word["text"])
Цикл
for
перебирает все элементы списка и получает из каждого полученного словаря значение с ключем
'text'.
Саму строку с
uri
лучше написать так:
uri = 'https://dictionary.yandex.net/api/v1/dicservice.json/lookup?key={}&lang={}&text={}'.format(yandexkey, lang, text)
Тогда не получите ошибку
Invalid syntax
.
Увидеть какой должен прийти результат можно
здесь.
Код я не тестировал, потому что у меня нет
api
ключа, но надеюсь сейчас уже проще будет разобраться что происходит.