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

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

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在做的事情,所以我很困惑。这里有很多“”的东西使我的眼睛流血。

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

最佳答案

好的,因此,在我的情况下,结果是未转义的&号被传递给gspread的models.resize()函数。我不知道如何从源头解决未转义的“&”号,因此我只是将其替换为适当的转义字符,然后开始比赛。

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

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

关于python - gspread HTTPError:400使用insert_row或add_row,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40165780/

10-12 18:44