将查询结果写入cs时,“utf8”编解码器无法解码字节0x92

2024-03-29 00:09:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从google工作表中以文本形式读取查询,该工作表将作为下面的“str1”传递。这是我的代码:

# get query string from google sheets
# establish database connection
cursor = conn.cursor()
cursor.execute((str1))
results1 = cursor.fetchall()
cursor.close()
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
for row in results1:
    ws.append(row)

此时我得到的错误如标题所示:

^{pr2}$

数据是关于作者/文章信息(我们是出版商)。它包含内容id、站点代码、署名、作者、facebook广告链接和拉取日期/时间

下面是一个包含错误的数据行的示例:

(1693279, 'CPD', 'Morgan Dietrich', "20 Intuitive People Share Their 'Something Doesn\x92t Feel Right' Story That Turned Out To Be True", 'business.facebook.com/550634765042035/posts/…;, datetime.datetime(2017, 11, 29, 20, 49, 24))

我读了很多关于这个错误的问题,但是没有找到解决办法。成功运行的查询(results1)的结果是如下所示的元组:

( (query result ro1/col1, query result ro1/col2, query result ro1/col3), 
  (query result ro2/col1, query result ro2/col2, query result ro2/col3), ... etc... )

我试过.encode/.decode,但它们对元组似乎不起作用。我试过过滤那些不好的字符,但没用。在

我到底该如何解决这个问题?这些与utf8相关的错误在过去给我带来了太多的烦恼,而我读到的这些错误仍然让我相当困惑。在

失败的原因是

(1693279,
 'CPD',
 'Morgan Dietrich',
 "20 Intuitive People Share Their 'Something Doesn\x92t Feel Right' Story That Turned Out To Be True",
 'https://business.facebook.com/550634765042035/posts/1223000787805426',
 datetime.datetime(2017, 11, 29, 20, 49, 24))

Tags: 代码fromdatetimefacebook错误googleresultquery
1条回答
网友
1楼 · 发布于 2024-03-29 00:09:37

您有bytestring数据,其中包含非ASCII和非UTF8数据。您要么将数据库配置为返回第4列的Unicode字符串,要么手动解码。在

如果您将数据解码为Windows代码页1252(或相同范围内的许多其他Windows代码页,但对于其他英语文本,1252最有可能是1252),则0x92字节是U+2019 RIGHT SINGLE QUOTATION MARK代码点,因此您可以尝试:

for row in results1:
    row = list(row)  # convert to list for easier mutation
    row[3] = row[3].decode('cp1252')
    ws.append(row)

相关问题 更多 >