我想使用gspread
库从谷歌电子表格中删除记录。
另外,如何获取谷歌电子表格中的行数/记录数?gspread
提供.row_count()
,它返回总行数,包括那些空白的,但我只想计算有数据的行。
我想使用gspread
库从谷歌电子表格中删除记录。
另外,如何获取谷歌电子表格中的行数/记录数?gspread
提供.row_count()
,它返回总行数,包括那些空白的,但我只想计算有数据的行。
自 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)
这是一个简单的蛮力解决方案,用于在不删除工作表的情况下擦除整张工作表。
一种方法是下载 json 对象中的数据,get_all_records()
然后检查该对象的长度。该方法返回最后一个非空白行之上的所有行。如果后面的行不是空白但不是尾随空白,它将返回空白行。
阅读源代码似乎没有直接删除行的方法 - 只有添加它们.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 开始计算行数(因此不是基于零的编号)。