为啥我的 Python 代码在从文本文件中读取时会打印额外的字符“”?

     2023-02-22     71

关键词:

【中文标题】为啥我的 Python 代码在从文本文件中读取时会打印额外的字符“”?【英文标题】:Why does my Python code print the extra characters "" when reading from a text file?为什么我的 Python 代码在从文本文件中读取时会打印额外的字符“”? 【发布时间】:2016-03-27 17:36:25 【问题描述】:
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.

【问题讨论】:

您的文件可能以 UTF-8 BOM 编码。如果这不是您想要的,请在没有 BOM 的情况下对其进行编码。 How do I remove  from the beginning of a file?的可能重复 @MarcB 不是骗人的; Python 不是 PHP,在处理 UTF-8 BOM 方面有更好的选择。 OP,将encoding='utf-8-sig' 传递给您的open() 呼叫。 是的,文森特是对的。这是Byte-order mark 的典型情况。 @senshin 成功了,谢谢。 'code' data=open('sketch.txt',encoding='utf-8-sig') 【参考方案1】:

我找不到 Python 3 的副本,它处理与 Python 2 不同的编码。所以答案是:不要使用默认编码('utf-8')打开文件,而是使用'utf-8-sig' ,它期望并去除UTF-8 Byte Order Mark,即显示为

也就是说,而不是

data = open('info.txt')

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

请注意,如果您使用的是 Python 2,您应该会看到例如Python, Encoding output to UTF-8 和 Convert UTF-8 with BOM to UTF-8 with no BOM in Python。您需要使用codecsstr.decode 进行一些恶作剧才能使其在Python 2 中正常工作。但在Python 3 中,您需要做的就是在打开文件时设置encoding= 参数。

【讨论】:

即使在使用这种编码之后,我仍然在某行前面得到 \ufeff,知道为什么吗?【参考方案2】:

在处理 excel csv 文件时,我遇到了一个非常相似的问题。最初,我将下拉选项中的文件保存为 .csv utf-8(逗号分隔)文件。然后我将它保存为一个 .csv(逗号分隔)文件,一切都很好。 .txt 文件可能存在类似问题

【讨论】:

【参考方案3】:

当我发生这种情况时,它只发生在我的 CSV 的第一行,无论是读取还是写入。对于我正在做的事情,我只是在第一个位置做了一个“牺牲”条目,这样那些角色就会被添加到我的牺牲条目中,而不是我关心的任何一个。 Definitley 不是一个强大的解决方案,但速度很快,并且适合我的目的。

【讨论】:

在从文件读取的字母数字数组中查找数字元素并将它们写入新文件

...oanewfile【发布时间】:2017-06-2513:48:36【问题描述】:所以我的目标是读取一个文本文件,该文件是一个包含整数和字符串的数组,然后对一些数字进行一些计算,然后将原始数据与新计算的数据一起放入一个新的文本文 查看详情

Visual Studio 代码编辑器中的问题。为啥我保存文件时会关闭它们?

】VisualStudio代码编辑器中的问题。为啥我保存文件时会关闭它们?【英文标题】:IssueinVisualStudioCodeeditor.WhyarefilesclosingwhenIsavethem?VisualStudio代码编辑器中的问题。为什么我保存文件时会关闭它们?【发布时间】:2021-12-2713:53:14【... 查看详情

为啥 Xcode 在从 Logic Unit Test 目标执行测试时会启动模拟器?

】为啥Xcode在从LogicUnitTest目标执行测试时会启动模拟器?【英文标题】:WhyXcodeislaunchingasimulatorwhenperformingatestfromaLogicUnitTesttarget?为什么Xcode在从LogicUnitTest目标执行测试时会启动模拟器?【发布时间】:2019-03-1915:47:02【问题描述... 查看详情

C ++将文本文件中的数字读取到数组中

...中读取数字并将它们打印在屏幕上时遇到了一些问题这是我的代码:#include<iostream>#in 查看详情

为啥在我运行 npm run dev 代码时会更改我的 mix-manifest 文件?

】为啥在我运行npmrundev代码时会更改我的mix-manifest文件?【英文标题】:Whydoeschangemymix-manifestfilewhenirunnpmrundevcode?为什么在我运行npmrundev代码时会更改我的mix-manifest文件?【发布时间】:2021-10-2317:47:47【问题描述】:当我在我的L... 查看详情

Python 文件未读取文本文件的内容

...entsofatextfile【发布时间】:2021-05-0523:19:23【问题描述】:我的Python文件只是一个很小的文件,它不会读取与python文件位于同一文件夹中的.txt文件的内容。(非常简单的)代码如下:file=open("contents.txt","r")print(file.read())file.clos 查看详情

为啥python在关闭fifo文件时会生成sigpipe异常?

】为啥python在关闭fifo文件时会生成sigpipe异常?【英文标题】:Whydoespythongeneratesigpipeexceptiononclosingafifofile?为什么python在关闭fifo文件时会生成sigpipe异常?【发布时间】:2020-02-0708:42:34【问题描述】:TL;DR:为什么关闭收到SIGPIPE异... 查看详情

为啥我的 App.js 代码在保存时会自行更改?

】为啥我的App.js代码在保存时会自行更改?【英文标题】:WhydoesmyApp.jscodechangesitselfuponsave?为什么我的App.js代码在保存时会自行更改?【发布时间】:2020-06-0207:57:26【问题描述】:我正在尝试构建我的第一个ReactNative应用程序。... 查看详情

为啥 InputStreamReader 从 jar 读取时会抛出 NPE?

】为啥InputStreamReader从jar读取时会抛出NPE?【英文标题】:WhydoesInputStreamReaderthrowaNPEwhenreadingfromajar?为什么InputStreamReader从jar读取时会抛出NPE?【发布时间】:2011-08-2617:33:55【问题描述】:我正在尝试使用流迭代已知目录中的类文... 查看详情

为啥在从 C# 创建的进程中运行 bash 命令时我的 $PATH 不同?

】为啥在从C#创建的进程中运行bash命令时我的$PATH不同?【英文标题】:Whyismy$PATHdifferentwhenrunningbashcommandsinsideaprocesscreatedfromC#?为什么在从C#创建的进程中运行bash命令时我的$PATH不同?【发布时间】:2021-07-1407:14:51【问题描述】... 查看详情

为啥我的代码只显示了一行?

】为啥我的代码只显示了一行?【英文标题】:Whyisonlyonelineofmycodeshowingup?为什么我的代码只显示了一行?【发布时间】:2019-04-0810:06:01【问题描述】:我正在尝试从我的文件(salsa2.txt)中读取,并且只显示其中的一行?我的文本... 查看详情

为啥我的 .NET 应用程序从网络驱动器运行时会崩溃?

】为啥我的.NET应用程序从网络驱动器运行时会崩溃?【英文标题】:Whydoesmy.NETapplicationcrashwhenrunfromanetworkdrive?为什么我的.NET应用程序从网络驱动器运行时会崩溃?【发布时间】:2010-09-1400:21:31【问题描述】:我的.NET应用程序在... 查看详情

为啥 HttpServletRequest 对象在从一个 servlet 转发到另一个 servlet 时会发生变化?

】为啥HttpServletRequest对象在从一个servlet转发到另一个servlet时会发生变化?【英文标题】:WhyHttpServletRequestobjectgetchangedwhenitisforwardedfromoneservlettoanother?为什么HttpServletRequest对象在从一个servlet转发到另一个servlet时会发生变化?【... 查看详情

为啥 CoUninitialize 在退出时会导致错误?

】为啥CoUninitialize在退出时会导致错误?【英文标题】:WhydoesCoUninitializecauseanerroronexit?为什么CoUninitialize在退出时会导致错误?【发布时间】:2011-02-0820:59:33【问题描述】:我正在开发一个C++应用程序以从Excel文件中读取一些数... 查看详情

从文本文件中读取非 ASCII 字符

...,比如编解码器,但没有奏效。我该如何解决这个问题。我的文件.txtwörd我的代码f=open(\'myfile.txt\',\'r\')forlineinf:printlinef.close()输出 查看详情

为啥即使在关闭临时文件后我也能够写入和读取它?

】为啥即使在关闭临时文件后我也能够写入和读取它?【英文标题】:WhyamIabletowritetoandreadatempfileevenafterclosingit?为什么即使在关闭临时文件后我也能够写入和读取它?【发布时间】:2018-11-1106:34:19【问题描述】:我正在尝试从我... 查看详情

为啥xml包在Python3中修改我的xml文件?

】为啥xml包在Python3中修改我的xml文件?【英文标题】:WhydoesxmlpackagemodifymyxmlfileinPython3?为什么xml包在Python3中修改我的xml文件?【发布时间】:2018-02-0923:01:29【问题描述】:我使用Python3.5中的xml库来读取和写入一个xml文件。我不... 查看详情

Python 不读取整个文本文件

...有看到任何人在***上遇到过,甚至没有在谷歌上看到过。我的主要目标是能够用另一个字符串替换文件中出现的字符串。有没有办法可以访问文件中的所有行。问题是当我尝试读取一个大文本文件(1-2gb)的文本时,python只读取... 查看详情