gpt4 book ai didi

python - 'utf- 8' codec can' t 解码字节 0x92 在位置 18 : invalid start byte

转载 作者:行者123 更新时间:2023-12-01 09:47:18 26 4
gpt4 key购买 nike

我正在尝试读取名为 df1 的数据集,但它不起作用

import pandas as pd
df1=pd.read_csv("https://raw.githubusercontent.com/tuyenhavan/Statistics/Dataset/World_Life_Expectancy.csv",sep=";")

df1.head()

以下是上述代码中的巨大错误,但这是最相关的
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 18: invalid start byte

最佳答案

数据确实没有编码为 UTF-8;除了那个 0x92 字节之外,一切都是 ASCII:

b'Korea, Dem. People\x92s Rep.'

解码为 Windows codepage 1252相反,其中 0x92 是一个花哨的报价, :
df1 = pd.read_csv("https://raw.githubusercontent.com/tuyenhavan/Statistics/Dataset/World_Life_Expectancy.csv",
sep=";", encoding='cp1252')

演示:
>>> import pandas as pd
>>> df1 = pd.read_csv("https://raw.githubusercontent.com/tuyenhavan/Statistics/Dataset/World_Life_Expectancy.csv",
... sep=";", encoding='cp1252')
>>> df1.head()
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 \
0 Afghanistan 55.1 55.5 55.9 56.2 56.6 57.0 57.4 57.8 58.2 58.6
1 Albania 74.3 74.7 75.2 75.5 75.8 76.1 76.3 76.5 76.7 76.8
2 Algeria 70.2 70.6 71.0 71.4 71.8 72.2 72.6 72.9 73.2 73.5
3 American Samoa .. .. .. .. .. .. .. .. .. ..
4 Andorra .. .. .. .. .. .. .. .. .. ..

2010 2011 2012 2013 Unnamed: 15 2014 2015
0 59.0 59.3 59.7 60.0 NaN 60.4 60.7
1 77.0 77.2 77.4 77.6 NaN 77.8 78.0
2 73.8 74.1 74.3 74.6 NaN 74.8 75.0
3 .. .. .. .. NaN .. ..
4 .. .. .. .. NaN .. ..

然而,我注意到,Pandas 似乎也接受了 HTTP header 的表面值(value),并在您从 URL 加载数据时生成 Mojibake。当我将数据直接保存到磁盘时,然后用 pd.read_csv() 加载它数据已正确解码,但从 URL 加载会产生重新编码的数据:
>>> df1[' '][102]
'Korea, Dem. People’s Rep.'
>>> df1[' '][102].encode('cp1252').decode('utf8')
'Korea, Dem. People’s Rep.'

这是 known bug in Pandas .您可以使用 urllib.request 来解决此问题。加载 URL 并将其传递给 pd.read_csv()反而:
>>> import urllib.request
>>> with urllib.request.urlopen("https://raw.githubusercontent.com/tuyenhavan/Statistics/Dataset/World_Life_Expectancy.csv") as resp:
... df1 = pd.read_csv(resp, sep=";", encoding='cp1252')
...
>>> df1[' '][102]
'Korea, Dem. People’s Rep.'

关于python - 'utf- 8' codec can' t 解码字节 0x92 在位置 18 : invalid start byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46000191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com