Eri*_*lan 1 python character-encoding python-3.x
如果编码失败,有没有办法尝试解码字节数组而不引发错误?
编辑:解决方案不需要使用 bytearray.decode(...)。任何可以完成这项工作的库(最好是标准的)都会很棒。
注意:我不想忽略错误(我可以使用bytearray.decode(errors='ignore'))。我也不希望引发异常。例如,我希望函数返回 None。
my_bytearray = bytearray('', encoding='utf-8')
# ...
# Read some stream of bytes into my_bytearray.
# ...
text = my_bytearray.decode()
Run Code Online (Sandbox Code Playgroud)
如果 my_bytearray 不包含有效的 UTF-8 文本,最后一行将引发错误。
问题:有没有办法执行验证但不引发错误?
(我意识到引发错误被认为是“pythonic”。假设出于某些或其他充分的原因,这是不可取的。)
我不想使用 try-catch 块,因为此代码被调用了数千次,而且我不希望每次引发此异常时我的 IDE 都停止(而我确实希望它在出现其他错误时暂停)。
您可以使用抑制上下文管理器来抑制异常,并具有比 try/except/pass 稍微漂亮的代码:
import contextlib
...
return_val = None
with contextlib.suppress(UnicodeDecodeError):
return_val = my_bytearray.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)