16

我想使用gspread库从谷歌电子表格中删除记录。

另外,如何获取谷歌电子表格中的行数/记录数?gspread提供.row_count(),它返回总行数,包括那些空白的,但我只想计算有数据的行。

4

5 回答 5

12

自 gspread 版本 0.5.0(2016 年 12 月)以来,您可以删除带有delete_row().

例如,要删除索引为 42 的行,您可以:

worksheet.delete_row(42)
于 2016-12-14T17:03:08.537 回答
8

您能否准确指定删除行/记录的方式?他们在一张纸的中间吗?底部?最佳?

我有一种情况,我想在处理完数据后擦除除标题之外的所有数据。为此,我只调整了工作表的大小两次。

#first row is data header to keep    
worksheet.resize(rows=1)
worksheet.resize(rows=30)

这是一个简单的蛮力解决方案,用于在不删除工作表的情况下擦除整张工作表。

用数据计算行数

一种方法是下载 json 对象中的数据,get_all_records()然后检查该对象的长度。该方法返回最后一个非空白行之上的所有行。如果后面的行不是空白但不是尾随空白,它将返回空白行。

于 2016-07-25T15:03:04.127 回答
1

阅读源代码似乎没有直接删除行的方法 - 只有添加它们.resize()的方法或调整工作表大小的方法。在获取行号时,有一种.row_count()方法可以为您完成这项工作。

于 2013-01-31T12:28:55.740 回答
1

添加到@AsAP_Sherb 回答:

如果要计算有多少行,请不要使用get_all_records()- 而是使用worksheet.col_values(1),并计算其长度。(而不是得到整个表,你只得到一列)我认为这会更节省时间(并且肯定会节省内存)

于 2018-12-18T03:48:31.387 回答
0

worksheet.delete_row(42)已弃用(2021 年 12 月)。现在您可以使用

worksheet.delete_rows(42)

新功能增加了可以同时删除多行的功能

worksheet.delete_row(42, 3)

它将删除接下来的三行,从第 42 行开始。

请注意,它从 1 开始计算行数(因此不是基于零的编号)。

于 2021-12-17T10:16:43.033 回答