【发布时间】:2021-03-17 15:48:47
【问题描述】:
我正在编写一个使用 | 作为分隔符的 .csv 文件。我希望能够在运行函数import_csv() 时指定这一点。我怎样才能做到这一点?为此,我必须使用 gspread 替代方案吗? Tbh 我只需要一个代码示例。
【问题讨论】:
标签: python-3.x google-sheets google-sheets-api gspread
我正在编写一个使用 | 作为分隔符的 .csv 文件。我希望能够在运行函数import_csv() 时指定这一点。我怎样才能做到这一点?为此,我必须使用 gspread 替代方案吗? Tbh 我只需要一个代码示例。
【问题讨论】:
标签: python-3.x google-sheets google-sheets-api gspread
我相信你的目标如下。
|)来放置 CSV 数据。当我看到 gspread 的脚本时,似乎import_csv(file_id, data) 使用 Drive API 放置了 CSV 数据。 Ref使用Drive API时,当前阶段无法手动设置分隔符。
因此,在此答案中,作为一种解决方法,我想建议使用 Sheets API 中的 batchUpdate 方法来实现您的目标。示例脚本如下。
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name you want to put the CSV data.
delimiter = "|" # Please set the delimiter.
csv = open('filename.csv', 'r').read() # Please set the CSV data.
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
body = {
"requests": [
{
"pasteData": {
"data": csv,
"delimiter": delimiter,
"coordinate": {
"sheetId": sheet.id
}
}
}
]
}
spreadsheet.batch_update(body)
Sheet1 中的 spreadsheetId。client,请把它用于你实际使用gspread的脚本。根据您的以下回复,
执行此操作时,它会抛出错误:
TypeError: Object of type bytes is not JSON serializable用于变量body
我担心csv = open('filename.csv', 'r').read() 的值可能是由于您当前问题的原因。所以,我想再添加一个示例脚本。在此示例脚本中,脚本中直接使用了 CSV 数据。
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name you want to put the CSV data.
delimiter = "|" # Please set the delimiter.
csv = """a1|b1|c1|d1|e1
a2|b2|c2||e2
a3|b3||d3|e3
"""
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
body = {
"requests": [
{
"pasteData": {
"data": csv,
"delimiter": delimiter,
"coordinate": {
"sheetId": sheet.id
}
}
}
]
}
spreadsheet.batch_update(body)
csv 的值作为| 的分隔符放入电子表格中。【讨论】:
TypeError: Object of type bytes is not JSON serializable for the variable body
csv = open('filename.csv', 'r').read() 的值可能是由于您当前问题的原因。但我不确定您的实际 CSV 文件。我为此道歉。请测试添加的脚本,确认脚本是否再次生效。
csv = open ('filename.csv, 'r').read().encode('utf-8').