无需Google API将Gsheets导入pandas DataFrame并解决ParserError问题
解决方案
方案1:调整pandas读取参数(无需修改请求链接)
Google Sheets导出的CSV默认会将包含逗号的单元格内容用双引号包裹,你遇到的解析错误多是因为pandas未正确识别引用标记,调整read_csv的引用和编码参数即可解决:
import csv import pandas as pd df = pd.read_csv(gsheet_url, quotechar='"', encoding='utf-8', quoting=csv.QUOTE_MINIMAL)
如果仍有报错可以追加on_bad_lines='skip'参数跳过异常行做临时验证。
方案2:修改Google Table Query的分隔符(彻底规避逗号冲突)
可以直接在tqx参数中指定自定义分隔符,无需依赖默认逗号分隔。将原URL的tqx参数修改为tqx=out:csv;delimiter=|即可指定竖线作为分隔符,对应代码如下:
gsheetid = 'xxxx' sheetname = 'xxxx' # 新增delimiter参数指定分隔符为竖线 gsheet_url = "https://docs.google.com/spreadsheets/d/{}/gviz/tq?tqx=out:csv;delimiter=|&sheet={}".format(gsheetid,sheetname) # 读取时指定分隔符为竖线 df = pd.read_csv(gsheet_url, sep='|', encoding='utf-8')
方案3:兜底处理方案
如果直接传URL给pandas读取仍有异常,可以先通过requests拉取CSV内容再交给pandas解析,避免请求层面的异常干扰:
import requests from io import StringIO import pandas as pd gsheetid = 'xxxx' sheetname = 'xxxx' gsheet_url = "https://docs.google.com/spreadsheets/d/{}/gviz/tq?tqx=out:csv&sheet={}".format(gsheetid,sheetname) res = requests.get(gsheet_url) res.encoding = 'utf-8' df = pd.read_csv(StringIO(res.text), quotechar='"')
内容的提问来源于stack exchange,提问作者Shafeeq
相关产品推荐
相关产品推荐

