gpt4 book ai didi

Python 和 Pandas : UnicodeDecodeError: 'ascii' codec can't decode byte

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:00 27 4
gpt4 key购买 nike

使用 Pandas 将 json 对象读入 Pandas.DataFrame 后,我们只想打印每个 pandas 行中的第一年。例如:如果我们有 2013-2014(2015),我们要打印 2013

完整代码 (here)

x = '{"0":"1985\\u2013present","1":"1985\\u2013present",......}'
a = pd.read_json(x, typ='series')
for i, row in a.iteritems():
print row.split('-')[0].split('—')[0].split('(')[0]

出现以下错误:

---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-1333-d8ef23860c53> in <module>()
1 for i, row in a.iteritems():
----> 2 print row.split('-')[0].split('—')[0].split('(')[0]

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)

为什么会发生这种情况?我们该如何解决这个问题?

最佳答案

您的 json 数据字符串是 unicode 字符串,您可以通过打印其中一个值来查看它:

In: a[0]
Out: u'1985\u2013present'

现在您尝试在 unicode \u2031 (EN DASH) 处拆分字符串,但您提供给 split 的字符串不是 unicode 字符串(因此错误 'ascii' 编解码器无法解码字节 0xe2 - EN DASH 不是 ASCII 字符)。

为了使您的示例正常工作,您可以使用:

for i, row in a.iteritems():
print row.split('-')[0].split(u'—')[0].split('(')[0]

注意 uncode 破折号前面的 u。您还可以编写 u'\u2013' 来分割字符串。

有关 Python 中 unicode 的详细信息,请参阅 https://docs.python.org/2/howto/unicode.html

关于Python 和 Pandas : UnicodeDecodeError: 'ascii' codec can't decode byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32689118/

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