Python UnicodeDecodeError:&x27;ascii';编解码器可以';在位置8对字节0xea进行t解码:序号不在范围内(128)

Python UnicodeDecodeError:&x27;ascii';编解码器可以';在位置8对字节0xea进行t解码:序号不在范围内(128),python,excel,oop,google-sheets,Python,Excel,Oop,Google Sheets,我正在将从乔布斯API获取的数据写入谷歌电子表格。“latin-1”的后续编码一直编码到第93页,但当编码到第94页时,它会例外。我使用了以下不同的技术,但“latin-1”使用了最大分页。其他人也被评论过(因为他们死在第65页)。您能告诉我如何修改非注释(即编码('latin-1')以使199页安全地写在电子表格上吗? 代码如下所示: 在此方面的任何指导原则都将提前得到赞赏 def append_data(self,worksheet,row,start_row, start_col,en

我正在将从乔布斯API获取的数据写入谷歌电子表格。“latin-1”的后续编码一直编码到第93页,但当编码到第94页时,它会例外。我使用了以下不同的技术,但“latin-1”使用了最大分页。其他人也被评论过(因为他们死在第65页)。您能告诉我如何修改非注释(即编码('latin-1')以使199页安全地写在电子表格上吗? 代码如下所示: 在此方面的任何指导原则都将提前得到赞赏

  def append_data(self,worksheet,row,start_row, start_col,end_col):
    r = start_row #last_empty_row(worksheet)
    j = 0
    i = start_col
    while (i <= end_col):
        try:
            worksheet.update_cell(r,i,unicode(row[j]).encode('latin-1','ignore'))
            #worksheet.update_cell(r,i,unicode(row[j]).decode('latin-1').encode("utf- 
             16"))
            #worksheet.update_cell(r,i,unicode(row[j]).encode('iso-8859-1'))
            #worksheet.update_cell(r,i,unicode(row[j]).encode('latin-1').decode("utf-
            8"))
            #worksheet.update_cell(r,i,unicode(row[j]).decode('utf-8'))
            #worksheet.update_cell(r,i,unicode(row[j]).encode('latin-1', 'replace'))
            #worksheet.update_cell(r,i,unicode(row[j]).encode(sys.stdout.encoding,  
            'replace'))
            #worksheet.update_cell(r,i,row[j].encode('utf8'))
            #worksheet.update_cell(r,i,filter(self.onlyascii(str(row[j]))))      

        except Exception as e:  
            self.ehandling_obj.error_handler(self.ehandling_obj.SPREADSHEET_ERROR,[1])
            try:
                worksheet.update_cell(r,i,'N/A')
            except Exception as ee:
                y = 23
        j = j + 1
        i = i + 1
def append_数据(self、工作表、行、开始行、开始列、结束列):
r=开始行#最后一行为空(工作表)
j=0
i=开始

而(i您正在对字节字符串值调用
unicode()
,这意味着Python必须首先解码为unicode:

>>> unicode('\xea')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xea in position 0: ordinal not in range(128)
或者使用
str.decode()


我在这里选择UTF-8作为示例,您没有提供任何关于输入数据或其可能编码的详细信息。您需要自己在这里选择正确的编解码器。

有问题的单元格中有什么,以及回溯是什么样子的?我像这样从页面中获取数据,实际上我必须按照用户标准查看作业。我通过impl获得json数组一页是作为样本共享的:
repr(第[j]行)是什么
print for a row抛出异常?感谢您的指导,但事实是,我已经运行了您所有的三个编码建议。这些建议都不起作用。它们都在第65页抛出异常。只有一个成功地从第65页抛出,这是我在post中已经共享的。此命令:worksheet.update\u cell(r,I,unicode(row[j])。encode('latin-1','ignore'))但是t在第94页抛出异常。你能告诉我发生了什么吗?我不知道,除非看到你试图处理的实际数据和异常的完整回溯。否则这只是一个猜测游戏。
unicode(row[j], 'utf8').encode('latin1')
row[j].decode('utf8').encode('latin1')