不可打印的python unicode字符串

2024-05-18 12:22:49 发布

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

我从一张图片中检索了一些exif信息,得到了以下信息:

{ ...
37510: u'D2\nArbeitsamt\n\xc3\x84nderungsbescheid'
...}

我以为是这样的

{ ...
37510: u'D2\nArbeitsamt\nÄnderungsbescheid'
... }

我需要将值转换为str,但我无法使它工作。我总是得到这样的东西(使用python27)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-15: ordinal not in range(128)

你知道我怎么处理吗?你知道吗

更新:

我用python3试过了,现在抛出了一个错误,但是结果是现在

{ ...
37510: 'D2\nArbeitsamt\nÃ\x84nderungsbescheid',
... }

这仍然不是预期的。你知道吗


Tags: in信息ascii图片codecd2exifpython27
1条回答
网友
1楼 · 发布于 2024-05-18 12:22:49

似乎是utf8被错误地解码为拉丁1,然后放入unicode字符串中。您可以使用.encode('iso8859-1')来反转错误的解码。你知道吗

>>> my_dictionary = {37510: u'D2\nArbeitsamt\n\xc3\x84nderungsbescheid'}
>>> print(my_dictionary[37510].encode('iso8859-1'))
D2
Arbeitsamt
Änderungsbescheid

现在可以很好地打印出来,但也可以将其解码为unicode,这样就可以得到正确的类型以供进一步处理:

>>> type(my_dictionary[37510].encode('iso8859-1'))
<type 'str'>
>>> print(my_dictionary[37510].encode('iso8859-1').decode('utf8'))
D2
Arbeitsamt
Änderungsbescheid
>>> type(my_dictionary[37510].encode('iso8859-1').decode('utf8'))
<type 'unicode'>

相关问题 更多 >

    热门问题