我需要从test.txt读取文件内容,并将其转换为utf-8编码(可读中文)。
这似乎是一个简单的任务,但使用open()、codecs.open()等,它总是将行读入str类型,而不是将其识别为字节。
with codecs.open(input_file, 'rb') as reader:
for line in reader:
print(type(line))
# if it is bytes
#print(line.decode('utf-8'))我在test.txt中的输入文件内容与下面的b‘前缀完全相同,并将其标记为字节类型:
b'\xe5\x95\x8a \xE6\x8c\x89\xE4\xb9 \xe4\xb9\x88 \xe4\xb5 \xe5\x95\x8a \xe6\x9c\x89 \xe4\xbb\x80 \xe4\xb9\x88 \XE4\xba\xba\xb7\xb7\XE6\X91\XE6\X93\x9\x94\xb8\xaf\xbd\x95\x5\xa5\x5\xa5\x5\xb5\x5\xbd\x5\xbd\x5\x5\xa5\x5\x5\xe5\xa5\xbd \xe5\x86\x8d \xe8\xa7\x81 \xe5\x93\x8e \xe5\x86\x8d \xe8\xa7 \xe5\x97\xaf \xa5\xbd\xa5\xbd‘
我所期望的内容如下,但需要从文件中读取内容:
>>> line = b'\xe5\x95\x8a \xe6\x9c\x89 \xe4\xbb\x80 \xe4\xb9\x88 \xe4\xba\x8b \xe5\x95\x8a \xe6\x9c\x89 \xe4\xbb\x80 \xe4\xb9\x88 \xe4\xba\x8b \xe7\xbb\x99 \xe6\x88\x91 \xe6\x89\x93 \xe7\x94\xb5 \xe8\xaf\x9d \xe5\x95\x8a \xe5\x97\xaf \xe5\x97\xaf \xe5\xa5\xbd \xe5\xa5\xbd \xe5\xa5\xbd \xe5\xa5\xbd \xe5\x86\x8d \xe8\xa7\x81 \xe5\x93\x8e \xe5\x86\x8d \xe8\xa7\x81 \xe5\x97\xaf \xe5\xa5\xbd'
>>> print(line.decode('utf-8'))
啊 有 什 么 事 啊 有 什 么 事 给 我 打 电 话 啊 嗯 嗯 好 好 好 好 再 见 哎 再 见 嗯 好我该怎么做呢?我搜索了很多,但没有运气。请帮帮忙。
发布于 2022-07-27 10:03:13
应该将编码指定为要打开的参数,即
import codecs
with codecs.open("test.txt", encoding="utf-8") as reader:
for line in reader:
print(line)https://stackoverflow.com/questions/73135795
复制相似问题