gspread HTTPError: 400 using insert_row OR add_row

gspread HTTPError: 400 using insert_row OR add_row

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

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

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 页面上发现了一个引用此错误的点击,并且该用户在从他的 sheet 中删除权限后显然已经看到问题消失了。我已经删除了我的权限,但错误仍然存​​在。

我不是最精通 HTTP 更新数据的用户,我认为这就是 gspread 在这里所做的,所以我很困惑。这里有很多“””的东西,让我的眼睛流血。

感谢集体的任何advice/assistance!

好的,所以在我的例子中,结果是一个未转义的符号被传递给 gspread 的 models.resize() 函数。我不知道如何从源头上解决未转义的 & 符号,所以我只是用正确的转义字符替换它,然后我就开始比赛了。

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

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