python读取包含中文的txt

读取包含汉字的文本文件,需要注意文件的编码格式。
如果文件是 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 函数中指定要使用的文件编码格式,以避免出现乱码或者解码错误。

例如:txt中的内容:
python读取包含中文的txt_第1张图片

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'>

你可能感兴趣的:(python)