我有一个看起来像这样的二进制类型字符串列表,它是通过在rb
模式下读取文本文件获得的(r
由于可能混合了来自各种编码的字符,因此无法读取文件):-
new_list = [b'Vanessa Skarski\'s Account of Her Father\'s Death....', b'Hornslet wind-turbine collapse\r\nFrom Wikipedia' .....]
等等。
271
列表中的项目总数。但我希望列表项是普通字符串而不是二进制字符串。我已经研究过使用new_list = [item.decode(encoding='utf-8') for item in new_list]
但它给UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 643: invalid start byte
. 我只是想摆脱 b' 并获得正常的字符串。请问有什么想法吗?
编辑将字节转换为字符串中提到的解决方案?没有解决我在最初的帖子中已经提到的问题。下面列出了我的 Python 版本,如果这与错误有任何关系的话
3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
您拥有的字节对象不是以 UTF-8 编码的。编码取决于您文件的实际信息,除了首先创建文件并知道使用什么编码的人之外,没有人可以告诉您如何正确编码它们。
但是,鉴于上下文,流行的选择可能是:
latin1
(将始终解码,但可能对您没有意义)cp1252
Windows 系统的流行选择因此,例如:
new_list = [item.decode(encoding='latin1') for item in new_list]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句