python-3.x - 如何指定 gspread 在运行 import_csv 函数以分隔字段时使用的分隔符?
问题描述
我正在编写一个|
用作分隔符的 .csv 文件。我希望能够在运行函数时指定它import_csv()
。我怎样才能做到这一点?为此,我必须使用 gspread 替代品吗?Tbh 我只需要一个代码示例。
解决方案
我相信你的目标如下。
- 您想使用 gspread 将 CSV 数据放入 Google 电子表格。
- 您想通过提供分隔符来放置 CSV 数据,例如
|
. - 您已经能够使用 Sheets API 获取和放置 Google 电子表格的值。
问题和解决方法:
当我看到 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)
- 此脚本将 CSV 数据
Sheet1
放入spreadsheetId
. - 在此脚本中,about
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
作为 的分隔符放入电子表格中|
。
推荐阅读
- indexeddb - 仅使用引用更新 indexedDB 中的对象存储记录?
- sql - SQL 将自定义值分配给具有相似 ID 的那些行
- android - 后台的 Android 通知
- mysql - (MySQL) 使用 DATEDIFF 函数时遇到问题
- regex - 正则表达式 - 引号内的引号
- swift - 如何开发现有 Xcode 项目的自定义 cocoa-pod?
- angular - Angular 不会使用浏览器后退/前进按钮呈现 facebook 帖子
- apache-spark - spark As 可以是列子查询
- sql - 将日期转换放在where子句db2 sql中
- javascript - ReactJS Axios 它不允许我将数组分配为属性