csv 如何使用pandas仅从其URL获取电子表格的名称

k2fxgqgv  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(66)

我只需要文件的名称,这样当我从导入的工作表中创建CSV文件时,我就可以给予一个描述性的名称。但我不知道如何使用pd.read_excel()函数或任何其他函数获得其名称。
下面的代码是我在哪里

import pandas as pd

link = input("Enter link here:")

link=link.split('/')
sheet_id=link[5]
print (sheet_id)

  #sets spreadsheet to pd
xls = pd.ExcelFile(f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=xlsx") 

  #sets sheet_1 to be spreasheet
sheet_1 = pd.read_excel(xls,"Summary", header = 0)
print(sheet_1)
print("------------")

字符串

mxg2im7a

mxg2im7a1#

我相信你的目标如下。

  • 您想要检索f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=xlsx"的Google电子表格的标题。
  • 在您的情况下,电子表格f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=xlsx"已经公开共享。

如果我的理解是正确的,那么下面的示例脚本呢?
不幸的是,我无法从ExcelFile对象中找到Google电子表格的标题。因此,在这个答案中,我想提出另一种方法。

示例脚本:

在此示例中,Google电子表格的文件名是从响应头中检索的。

import pandas as pd
import requests

link = input("Enter link here:")

link=link.split('/')
sheet_id=link[5]
print (sheet_id)

r = requests.get(f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=xlsx")
print(r.headers['content-disposition'])
filename = r.headers['content-disposition'].split("filename*=UTF-8''")[1].replace(".xlsx", "")
print(filename)

字符串
或者,当使用unquote时,它变成如下。

import pandas as pd
import requests
from urllib.parse import unquote

link = input("Enter link here:")

link=link.split('/')
sheet_id=link[5]
print (sheet_id)

r = requests.get(f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=xlsx")
print(r.headers['content-disposition'])
filename = unquote(r.headers['content-disposition'].split("filename*=UTF-8''")[1].replace(".xlsx", ""))
print(filename)

注意:

  • 在这种情况下,它假设您的Google电子表格已经被公开共享。请小心。
  • 顺便说一句,如果您可以使用您的API密钥来使用Drive API,也可以使用以下脚本。
api_key = "###" # Please set your API key.
spreadsheet_id = "###" # Please set your Spreadsheet ID.
r = requests.get(f"https://www.googleapis.com/drive/v3/files/{spreadsheet_id}?key={api_key}")
filename = r.json().get("name", "")
print(filename)

相关问题