读取包含汉字的文本文件,需要注意文件的编码格式。
如果文件是 UTF-8 编码格式,则可以使用 Python 内置的 open 函数读取文件。例如:
with open('file.txt', encoding='utf-8') as f:
text = f.read()
如果文件是 GBK 或者其他编码格式,则需要在 open 函数中指定正确的编码格式,例如:
with open('file.txt', encoding='gbk') as f:
text = f.read()
如果不知道文件的编码格式,则可以使用第三方模块 chardet 来检测文件的编码格式。例如:
import chardet
with open('file.txt', 'rb') as f:
data = f.read()
encoding = chardet.detect(data)['encoding']
with open('file.txt', encoding=encoding) as f:
text = f.read()
在上述代码中,我们首先以二进制模式打开文件,并读取文件内容。然后,使用 chardet 模块检测文件的编码格式,并将检测出来的编码格式传递给 open 函数,以正确的编码格式读取文件内容。
需要注意的是,在读取文件时,应该始终在 open 函数中指定要使用的文件编码格式,以避免出现乱码或者解码错误。
with open(txt_path, 'rb') as f:
data = f.readlines()
print(len(data))
print(type(data))
print(data)
使用第三方模块 chardet 来检测文件的编码格式
import chardet
txt_path = "xxx"
with open(txt_path, 'rb') as f:
data = f.readlines()
print(len(data))
print(type(data))
print(data)
encoding = chardet.detect(data[0])['encoding']
with open(txt_path, encoding=encoding) as f:
data = f.readlines()
print(data)
这行代码中data[0], 如果使用data即: encoding = chardet.detect(data)['encoding']
encoding = chardet.detect(data)['encoding']
会报错为:
TypeError: Expected object of type bytes or bytearray, got: <class 'list'>