如何重新创建UnicodeDecodeError以便在python中进行测试?

问题描述 投票:0回答:1

所以我只是制作一个小csv解析器,在处理它时,我收到的错误看起来像

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0

我在用

with open(<file>) as f:
    df = pandas.read_csv(f)

为了读取文件。

我的解决方案是使用error='ignore'作为open()函数内部的一个选项(我知道这不是最佳实践)但最近我想回到它并通过使用try / except块来捕获错误来进行正确的错误处理并打印一条消息而不是忽略它。

但是,我似乎无法重新创建错误。我正在使用具有相同功能的相同csv文件而不再得到解码错误...这显然很烦人,因为如果它一次发生一次,它可能会再次发生,我想要正确处理它。

上次引起问题的角色看起来像连字符但更大。 csv很大,所以我再也找不到了。我想也许这是一个结束,但当我复制/粘贴一个“endash”我在网上找到csv时,我仍然没有得到错误。

这可能是一个愚蠢的问题,但如何在我的csv中写入非utf-8字符以重新创建此错误?

unicode utf-8 error-handling python-unicode
1个回答
0
投票

在位置0创建一个字节为80的字节字符串,并用UTF-8对其进行解码以重现相同的错误:

>>> s = b'\x80'
>>> s.decode('utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
© www.soinside.com 2019 - 2024. All rights reserved.