繁体   English   中英

读取文本文件时更改为可识别的编码?

[英]Change to recognized encoding when reading a text file?

当使用(例如)UTF-8编码打开文本文件进行阅读时,是否可以在阅读过程中更改编码?

动机:很可能您需要读取使用非默认编码编写的文本文件。 文本格式可能包含有关使用的编码的信息。 让一个HTML文件作为示例,或者XML,或者ASCIIDOC,以及许多其他文件。 在这种情况下,编码信息上方的行仅允许包含ASCII或某些默认编码。

在Python中,可以以二进制模式读取文件,然后自行将bytes类型的行转换为str 当在某行上找到有关编码的信息时,只需切换将行转换为unicode字符串时要使用的编码。

在Python 3中,使用TextIOBase实现文本文件,该文件还定义了encoding属性, buffer和其他内容。

有什么好方法可以更改编码信息(用于解码bytes ),以便以所需的方式解码下一行?

经典用法是:

  • 以二进制格式(字节字符串)打开文件
  • 读取大块并猜测编码(例如,通过简单的扫描或使用RegEx)

然后:

  • 关闭文件,然后使用找到的编码以文本模式重新打开文件,或者
  • 移至开头:seek(0),以字节字符串读取整个内容,然后使用找到的编码对内容进行解码。

请参见以下示例: 检测XML文件中的字符编码(Python配方) 注意:该代码有些陈旧,但很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM