【问题标题】:Error: list indices must be integers, not Cell错误:列表索引必须是整数,而不是单元格
【发布时间】:2015-06-01 14:05:35
【问题描述】:

我想使用 python 将数据写入谷歌表格。现在我做了以下事情来实现这一点:

gc = gspread.authorize(credentials)

sh = gc.open('test')

worksheet = sh.worksheet('Sheet1')

cell_list = []
cell_data = []

for e in range(len(scholar_key)):
   cell_list.append('B' + str(e))

for d in scholar_key:
   cell_data.append(d['titel'])

cell_range = worksheet.range(cell_list[1]+ ":" +cell_list[-1])

for i in cell_range:
  i.value = cell_data[i]

worksheet.update_cells(cell_range)

但我不断收到以下错误:TypeError: list indices must be integers, not Cell 在第 28 行(这是 i.value = cell_data[i] 的行)。我究竟做错了什么?另一个问题是如何增加计数器,因为现在索引从 0 开始计数到 ​​19。但是,我希望计数器从 1 开始计数到 ​​20(对于列,这样我的 data_list 中只有值数组范围从 B1 到 B20)。

【问题讨论】:

  • 请发布完整的traceback,它对调试有很大帮助。
  • 第 28 行?给定的代码到底是哪一行?!
  • 请同时尝试使您的代码可用(例如包含import gspread)。

标签: python google-api google-sheets


【解决方案1】:

在这个循环中,i 将是 Cell 的实例,而不是数字索引

for i in cell_range:
  i.value = cell_data[i]

你可以改用这样的东西

for index, cell in enumerate(cell_range):
  cell.value = cell_data[index]

【讨论】:

  • 你是个英雄,这成功了! Tnx 为您提供清晰的解释
  • 枚举函数也为计数器问题提供了一个很好的解决方案!再次 Tnx:for index, e in enumerate(scholar_key, start=1): cell_list.append('B' + str(index))
猜你喜欢
  • 2012-03-11
  • 1970-01-01
  • 2016-01-08
  • 2015-07-11
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
相关资源
最近更新 更多