从文件中读取中文文本并将其打印到外壳

时间:2018-10-19 12:19:19

标签: python utf-8 foreign-keys decode encode

我正在尝试制作一个程序,该程序从.txt文件中读取中文行并将其打印到Python外壳程序(IDLE?)。

我遇到的问题是尝试对utf-8中的字符进行编码和解码,直到它们实际以中文打印。

到目前为止,我有这个:

  file_name = input("Enter the core name of the text you wish to analyze:")+'.txt'

  file = open(file_name, encoding="utf8")

  file = file.read().decode('utf-8').split()

  print(file)

但是,每次运行代码时,都会不断出现此错误提示。

    file = file.read().decode('utf-8').split()
AttributeError: 'str' object has no attribute 'decode'

现在,由于我是编程语言的新手,所以我不完全知道这意味着什么,所以我想知道是否可以从你们那里获得一些提示。非常感谢!

2 个答案:

答案 0 :(得分:2)

从您的错误消息中,我怀疑.read()的输出已经是一个字符串(更准确地说,如果您使用Python 3,则为Unicode字符点)。

您是否尝试了没有.decode()通话的情况?


为了更好地处理文件,请使用with上下文,因为这样可以确保在退出该块后将正确关闭文件。 另外,您可以使用for line in f语句遍历文件中的各行。

file_name = input("Enter the core name of the text you wish to analyze:")

with open(file_name + '.txt', encoding='utf8') as f:
    for line in f:
        line = line.strip()   # removes new lines or spaces at the start/end
        print(line)

答案 1 :(得分:1)

当您读取在Python 3中以这种方式打开的文件时,

文件=打开(文件名,编码=“ utf8”)

您正在告诉它文件是用UTF-8编码的,Python会自动对其进行解码。 file.read()已经是Unicode字符串(Python 3中的str类型),因此您无法再次对其进行解码。只需执行以下操作即可(不要覆盖file ...这就是您的文件句柄):

data = file.read().split()