У меня есть общедоступная таблица Google с двумя листами https://docs.google.com/spreadsheets/d/14hFn00O9632n96Z2xGWvfrcY-K4kHiOGR02Rx7dsj54/edit#gid=447738801.
Я знаю, как получить это как CSV (если бы у него был только 1 лист), но есть ли простой способ получить лист 1 и лист 2 в виде словаря или в виде CSV-файла (каждый лист как 1 CSV-файл), и я разобрать его.
gid
обоих листов разные
В конце у меня будет заголовок в качестве ключа и значения под заголовком в качестве значений
о, да, тогда я не знаю, как мы можем сохранить их в виде списка :( заголовок является ключом, а другой столбец - значением заголовка, который является списком)
использование pandas для дополнительных действий, которые необходимо выполнить после загрузки файла, спасибо за помощь
Просто используйте pandas для загрузки CSV. Затем вы можете преобразовать в Dict или что-нибудь еще позже
import pandas as pd
# Read data from file 'filename.csv'
data = pd.read_csv("filename.csv")
data.to_dict('series')
Используйте библиотеку requests
для загрузки каждого листа и записи содержимого ответа в файл.
Рабочая реализация:
import requests
sheets = {
'sheet1': 'https://docs.google.com/spreadsheets/d/14hFn00O9632n96Z2xGWvfrcY-K4kHiOGR02Rx7dsj54/export?format=csv&id=14hFn00O9632n96Z2xGWvfrcY-K4kHiOGR02Rx7dsj54&gid=0',
'sheet2': 'https://docs.google.com/spreadsheets/d/14hFn00O9632n96Z2xGWvfrcY-K4kHiOGR02Rx7dsj54/export?format=csv&id=14hFn00O9632n96Z2xGWvfrcY-K4kHiOGR02Rx7dsj54&gid=447738801'
}
for sheet in list(sheets.keys()):
response = requests.get(sheets[sheet])
with open(f'{sheet}.csv', 'wb') as csvfile:
csvfile.write(response.content)
Это сохранит каждый лист в файле (в данном случае sheet1.csv
и sheet2.csv
). Обратите внимание, что я получил ссылку для каждого листа, просто загрузив его в формате CSV из браузера и скопировав ссылку для скачивания.
Затем вы можете преобразовать его в словарь, используя библиотеку CSV. См. эта почта.
Спасибо @glhr, это в основном решает мою задачу. Есть ли у нас способ сохранить response.content только в памяти (а не записывать файл на диск, а затем снова читать его, чтобы создать диктофон). ТИА
Это возможно, объясните, пожалуйста, в своем посте, как вы хотите, чтобы данные были точно отформатированы в словаре (например, вам нужен словарь для каждой строки?).
добавлено в пост, каждый заголовок столбца является ключом, а значения под ним - его значениями, пытался flike = io.StringIO(response.text)
затем for row in csv.reader(flike):
Вы не можете иметь несколько значений для каждого ключа, если значения не находятся в списке.