当前位置: 首页 > 面试题库 >

从文本文件读取时,为什么我的Python代码会打印多余的字符“”?

通啸
2023-03-14
问题内容
try:
    data=open('info.txt')
    for each_line in data:
        try:
            (role,line_spoken)=each_line.split(':',1)
            print(role,end='')
            print(' said: ',end='')
            print(line_spoken,end='')
        except ValueError:
            print(each_line)
    data.close()
except IOError:
     print("File is missing")

当逐行打印文件时,代码倾向于在前面添加三个不必要的字符,即“”。

实际输出:

Man said:  Is this the right room for an argument?
Other Man said:  I've told you once.
Man said:  No you haven't!
Other Man said:  Yes I have.

预期产量:

Man said:  Is this the right room for an argument?
Other Man said:  I've told you once.
Man said:  No you haven't!
Other Man said:  Yes I have.

问题答案:

我找不到Python 3的重复版本,该版本3处理的编码与Python
2不同。因此,这就是答案:而不是使用默认编码(是'utf-8')打开文件,而是使用'utf-8-sig',它期望并去除UTF-
8字节顺序标记
,显示为

也就是说,代替

data = open('info.txt')

data = open('info.txt', encoding='utf-8-sig')

请注意,如果您使用的是Python
2,则应该看到例如Python,将输出编码为UTF-8并将带有BOM的UTF-8转换为在Python中没有BOM的UTF-8。您需要使用codecs或进行一些恶作剧,str.decode才能在Python
2中正常工作。但是在Python 3中,您要做的就是encoding=在打开文件时设置参数



 类似资料:
  • 问题内容: 我正在尝试从文本文件读取文本。有一些特殊的字符,如å,ä和ö。当我制作一个字符串并打印出该字符串时,我得到了?从这些特殊字符。我正在使用以下代码: 谁能告诉我是什么问题。我希望strLine以文本文件形式显示和保存å,ä和ö。提前致谢。 问题答案: 问题可能不在于文件,而在于您尝试打​​印的控制台。我建议您按照以下步骤 确保您正在读取的文件以UTF-8编码。 确保要打印的控制台具有正确

  • 问题内容: 我已经从.txt文件中读取了以下内容: 但是在阅读并输出后,我得到了: 开头为null,这是方法: 返回的字符串由其输出 我尝试按或检查该字符串,但得到-1 有想法该怎么解决这个吗? 问题答案: 考虑循环的第一次迭代。的值是空的,价值就是。 在字符串连接中,空引用将转换为字符串“空”。例如: 因此,在您的第一次迭代中,当您执行时: 的价值将是 您 可以将其 初始化为…但我不会。 无论如

  • 问题内容: 我正在使用Python打开文本文档: 我想将字符串变量的值替换为文本文档。有人可以让我知道怎么做吗? 问题答案: 如果使用上下文管理器,则将自动为你关闭文件 如果你使用的是Python2.6或更高版本,则最好使用 对于python2.7及更高版本,你可以使用代替 在Python3中,该函数有一个可选参数 Python3.6引入了f字符串作为另一种选择

  • 问题内容: 我有以下课程: 这是编译结果; 为什么我的输出中包含数字? 问题答案: 在第二种情况下,它将两个字符(G-71和o-111)的unicode码相加并打印总和。这是因为被视为数字类型,因此在这种情况下,运算符是通常的求和。

  • 问题内容: 当我从终端执行该程序时,我编写的程序未打印任何内容,因此我尝试运行以下代码 这是终端,为什么它不打印出来你好。主要功能是否还在运行? 问题答案: Python不会自动调用main()(并且您需要使用sys库来获取argv)。

  • 问题内容: 使用python从文本文件中读取行时,通常需要在处理文本之前截断末尾字符,如以下示例所示: 是否有一种优雅的方式或习惯用法来检索没有结束符的文本行? 问题答案: 该 惯用 方式在Python做,这是使用 rstrip(“\ n”) : 其他每个选项都有一个陷阱: file(’…’)。read()。splitlines() 必须立即将整个文件加载到内存中。 *如果最后一行没有EOL,则