You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gspread读取Google Sheets时如何保留空值(None/空字符串)?

解决gspread读取Google Sheets时保留空列值的问题

当然可以实现!你当前遇到的问题是因为gspread的Range.value属性默认会自动截断每行末尾的空单元格,所以只返回了有数据的A列内容。下面给你两种实用的解决方案,都能让返回的嵌套列表包含对应空列的None(或空字符串):

方法一:手动遍历单元格(最精准)

这种方法会逐个获取指定范围内的每个单元格值,确保不会遗漏任何位置的空单元格,适合需要精确控制每个单元格值的场景:

FN = "TestSheetGSPREAD"
wb1 = gc.open(FN)
ws1 = wb1.get_worksheet(0)

# 获取A3:H100范围的所有单元格对象
cell_range = ws1.range('A3:H100')
# 计算每行的列数(A到H共8列)
cols_count = 8
# 将单元格对象按行分组
rows_cells = [cell_range[i:i+cols_count] for i in range(0, len(cell_range), cols_count)]

# 转换为包含None的嵌套列表
data = []
for row in rows_cells:
    # 空单元格的value属性为None,直接保留即可
    row_values = [cell.value for cell in row]
    data.append(row_values)

这样处理后,每行都会严格包含8个元素,空单元格对应的值就是None。

方法二:补全每行的空值(更简洁)

如果确定你的目标范围是固定的8列(A到H),且只有每行末尾的列是空的,那么可以先获取原始数据,再手动补全空值到指定列数:

FN = "TestSheetGSPREAD"
wb1 = gc.open(FN)
ws1 = wb1.get_worksheet(0)

# 获取原始数据(仅返回有内容的部分)
raw_data = ws1.get('A3:H100').value
# 目标列数
target_cols = 8

# 补全每行的空值为None
data = [row + [None] * (target_cols - len(row)) for row in raw_data]

这种方法代码更简洁,运行效率也更高,完美适配你的场景(仅A列有数据,其余列全空)。

如果希望空值用空字符串''代替None,只需要把代码中的[None]改成['']即可。

内容的提问来源于stack exchange,提问作者Rapid1898

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 11:22:41