Как использовать iter_lines для отображения каждой строки?Python

Программы на Python
Ответить
Anonymous
 Как использовать iter_lines для отображения каждой строки?

Сообщение Anonymous »

У меня есть следующий код, который я написал для работы с запросами. Это дает мне только одну строку, а не все. Есть ли способ получить все строки, а не только одну? Спасибо.
#import modules
import requests
import json
import re

#retrieve lichess games for a specific user
def get_lichess_games(username):

api_session = requests.Session()
api_headers = {
'Authorization' : 'Bearer CZfakeeeeWo',
'Accept' : 'application/x-ndjson',
}

with api_session.get(f'https://lichess.org/api/games/user/{username}', headers=api_headers, stream=True) as response:
for line in response.iter_lines():
if not line:
continue
test = json.loads(line.decode('utf-8'))
return test

data = get_lichess_games(username='putismydadsdad')
print(data['id'])

Пример строки:
{'id': 'dsVb', 'rated': True, 'variant': 'standard', 'speed': 'rapid', 'perf': 'rapid', 'createdAt': 1582685880089, 'lastMoveAt': 1582686389499, 'status': 'resign', 'players': {'white': {'user': {'name': 'gibaro', 'id': 'gibaro'}, 'rating': 1511, 'ratingDiff': 5}, 'black': {'user': {'name': 'putin', 'id': 'putin'}, 'rating': 1500, 'ratingDiff': -170, 'provisional': True}}, 'winner': 'white', 'moves': 'd4 d5 Nf3 Nf6 g3 Nc6 Bg2 e6 Nc3 Bb4 Bd2 Bxc3 Bxc3 O-O b3 b5 Qd3 a5 Qxb5 Ba6 Qxc6 Ng4 O-O Qc8 Qc5 Bxe2 Rfe1 Bxf3 Bxf3 Nxh2 Kxh2 Ra6 Qa3 f6 Qc1 e5 Bxd5+ Kh8 Bg2 exd4 Bxd4 c5 Bc3 a4 Qf4 g5 Qc4 Qf5 Qxa6 Qxf2 Qf1 Qxc2 Bxf6+ Rxf6 Qxf6+ Kg8', 'clock': {'initial': 600, 'increment': 0, 'totalTime': 600}}

Итак, проблема в возврате. Я могу полностью отключить return и заменить его на print(['test']) и получить все свои строки.
Но моя конечная цель — создать функцию, которая извлекает все значения и передает их в конвейер. Тогда я могу просто вызвать свою функцию в разных местах и ​​запросить разные данные в этих ситуациях. Итак примеры;
get_lichess_games(username='putin')
print ids this time

get_lichess_games(username='putin')
print winners this time

get_lichess_games(username='putin')
print moves this time


Подробнее здесь: https://stackoverflow.com/questions/679 ... every-line
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»