【发布时间】:2013-01-31 12:17:41
【问题描述】:
我想使用gspread 库从谷歌电子表格中删除一条记录。
另外,如何获取谷歌电子表格中的行数/记录数? gspread 提供了.row_count(),它返回总行数,包括那些空白的,但我只想统计有数据的行。
【问题讨论】:
标签: python google-sheets gspread
我想使用gspread 库从谷歌电子表格中删除一条记录。
另外,如何获取谷歌电子表格中的行数/记录数? gspread 提供了.row_count(),它返回总行数,包括那些空白的,但我只想统计有数据的行。
【问题讨论】:
标签: python google-sheets gspread
自 gspread 0.5.0 版(2016 年 12 月)起,您可以使用 delete_row() 删除一行。
例如,要删除索引为 42 的行,您可以:
worksheet.delete_row(42)
【讨论】:
您能否准确指定删除行/记录的方式?他们在一张纸的中间吗?底部?顶?
我有一种情况,我想在处理完数据后擦除除标题之外的所有数据。为此,我只调整了工作表的大小两次。
#first row is data header to keep
worksheet.resize(rows=1)
worksheet.resize(rows=30)
这是一个简单的强力解决方案,用于擦除整张工作表而不删除工作表。
一种方法是使用get_all_records() 将数据下载到json 对象中,然后检查该对象的长度。该方法返回最后一个非空白行之上的所有行。如果后面的行不是空白但不是尾随空白,它将返回空白行。
【讨论】:
delete_row()依次删除所有行要高效得多
resize函数的用法
阅读源代码似乎没有直接删除行的方法 - 只有添加它们的方法或 .resize() 调整工作表大小的方法。
在获取行号时,有一个 .row_count() 方法应该可以为您完成这项工作。
【讨论】:
添加到@AsAP_Sherb 答案:
如果你想计算有多少行,不要使用get_all_records() - 而是使用worksheet.col_values(1),然后计算它的长度。
(而不是得到整个表,你只得到一列)
我认为这会更节省时间(并且肯定会节省内存)
【讨论】:
worksheet.delete_row(42) 已弃用(2021 年 12 月)。现在您可以使用
worksheet.delete_rows(42)
新功能增加了可以同时删除多行的功能
worksheet.delete_row(42, 3)
它将删除接下来的三行,从第 42 行开始。
注意它从 1 开始计算行数(所以不是从零开始的编号)。
【讨论】: