gspread HTTPError:400使用insert_row或add_row

时间:2016-10-20 22:53:06

标签: python gspread

我的第一个问题,所以我希望我不要激怒小组; - )

使用gspread 0.4.0和Python 2.7,我可以访问Google表格中的页面,可以读取数据,还可以使用update_cell()更改单元格的内容。但是,尝试插入行或在表的末尾附加行都会遇到以下错误:

File "c:\Python27\lib\site-packages\gspread\models.py", line 525, in append_row
self.add_rows(1)
File "c:\Python27\lib\site-packages\gspread\models.py", line 507, in add_rows
self.resize(rows=self.row_count + rows)
File "c:\Python27\lib\site-packages\gspread\models.py", line 500, in resize
self._element = self.client.put_feed(uri, ElementTree.tostring(feed))
File "c:\Python27\lib\site-packages\gspread\client.py", line 212, in put_feed
r = self.session.put(url, data, headers=headers)
File "c:\Python27\lib\site-packages\gspread\httpsession.py", line 85, in put
return self.request('PUT', url, data=data, **kwargs)
File "c:\Python27\lib\site-packages\gspread\httpsession.py", line 72, in request
response.status_code, response.content))
spread.exceptions.HTTPError: 400: The reference to entity "format" must end with the ';' delimiter.

我在gspread Github页面上发现了一个引用此错误的内容,当用户从他的工作表中删除权限时,该用户显然已经看到问题消失了。我已经删除了我的权限,但错误仍然存​​在。

我不是最精明的HTTP用户来更新数据,我认为gspread正在这里做什么,所以我很难过。有很多"""这里的东西让我的眼睛流血。

感谢集体提供任何建议/协助!

1 个答案:

答案 0 :(得分:1)

好的,所以在我的情况下,事实证明,未转义的&符号被传递给gspread的models.resize()函数。我不知道如何在源头上解决未转义的&符号,所以我只是用适当的转义字符替换它并且我已经参加了比赛。

具体来说,我修改了第500行的models.py(在resize()函数中) -

self._element = self.client.put_feed(uri,ElementTree.tostring(feed).replace("& format","& format"))