Я пытаюсь экспортировать dict в csv. Я извлекаю данные из API и мне нужно их распечатать в CSV.
Я использую:
import datetime
import csv
import pendulum
import requests
from tabulate import tabulate
import pandas as pd
import numpy as np
API, который я вызываю, приведен ниже:
api_url = "https://secure-webtv-static.canal-plus.com/metadata/cpfra/all/v2.2/globalchannels.json"
response = requests.get(api_url).json()
Получение данных, которые я хотел бы получить, находится здесь:
tv_programme = {
channel["name"]: [
[
e['title'],
e['subTitle'],
pendulum.parse(e['timecodes'][0]['start']
).time().strftime("%H:%M"),
datetime.timedelta(
milliseconds=e['timecodes'][0]['duration'],
).__str__().rsplit(".")[0],
] for e in channel["events"]
] for channel in response["channels"]
}
Я пытаюсь использовать Pandas для отправки данных в файл CSV
df = pd.DataFrame(tabulate(
tv_programme["CANAL+ SPORT"],
headers = "firstrow"("Title", "Subtitle", "Time", "Duration"),
tablefmt = "csv",
))
print(tabulate(
tv_programme["CANAL+ SPORT"],
headers=["Title", "Subtitle", "Time", "Duration"],
tablefmt = "csv",
))
df = pd.DataFrame(sorted(list(tv_programme.headers('sports.csv'))))
print
собирает приведенные ниже данные, и мне это нужно для заполнения файла CSV
.
Title Subtitle Time Duration
----------------------------------- ----------- ------ ----------
Sport Reporter Doc Sport 10:42 0:26:23
Chelsea / West Ham 14e journée 11:11 0:48:38
Cesta punta - Pro Tour 2020 Autre Sport 12:51 1:28:53
Rugby - Golden Lions / Natal Sharks 4e journée 14:20 0:45:56
Rugby - Colomiers / Perpignan 8e journée 15:55 0:50:00
Rugby - Oyonnax / Biarritz 6e journée 17:55 0:50:00
Rugby - Castres / Brive 4e journée 19:55 1:15:00
Теперь вот где я застреваю и получаю сообщение об ошибке: TypeError: 'str' object is not callable
Вам нужно передать фактическую структуру данных, а не строку, созданную tabulate
.
Например:
df = pd.DataFrame(tv_programme["CANAL+"], columns=["Title", "Subtitle", "Time", "Duration"])
df.to_csv("canal_plus.csv", index=False)
Это дает вам: