我在使用Pandas读取选项卡分隔的文件时遇到问题。
所有单元格值都有双引号,但对于某些行,有一个额外的双引号打断了整个过程。例如:
Column A Column B Column C
"foo1" "121654" "unit"
"foo2" "1214" "unit"
"foo3" "15884""
我得到的错误是:错误标记数据。C错误:第8355行预期有31个字段,SAW58
我使用的代码是:
csv = pd.read_csv(file, sep='\t', lineterminator='\n', names=None)
它适用于其余文件,但不适用于出现额外双引号的文件。
您可以执行预处理步骤来修复报价问题:
with open(file, 'r') as fp:
text = fp.read().replace('""', '"')
with open(file, 'w') as fp:
fp.write(text)
如果无法更改错误输入,最好的方法是将输入文件读入io。StringIO
对象,替换双引号,然后将这个类似文件的对象传递给pd.read
(它支持文件名和类似文件的对象)
这样,您就不必创建临时文件或更改输入数据。
import io
with open(file) as f:
fileobject = io.StringIO(f.read().replace('""','"'))
csv = pd.read_csv(fileobject, sep='\t', lineterminator='\n', names=None)
目前,我正在逐行读取由制表符分隔的文件,将每行中的项目拆分,并通过硬编码值50查找由50个项目组成的制表符分隔的行,然后创建数据表。 问题:以制表符分隔的源文件在拆分后有时有50或53项以制表符分隔的行。需要直接读取以制表符分隔的源文件中具有最大制表符分隔符的行,然后继续我的逻辑。 我的C代码
问题内容: 我有一个文件,其中用分号“”分隔行。我想逐行阅读此文件,其中行应基于而不是换行符的存在。 一种方法是: 但是,如果我的文件太大,则内存使用效率不高。与其一起阅读整个文件,不如逐行阅读。 支持参数’newline’,但是此参数仅用作此处提到的输入。 有什么方法可以有效地读取文件行,但要基于预先指定的分隔符吗? 问题答案: 您可以使用生成器:
问题内容: 我正在尝试读取以下形式的大文本文件: 我想在文本文件中将此字符串作为一个大的Java字符串读取。这可能吗?我知道使用split方法。 它可以逐行读取它,但我真正需要的是在“ +”号处分割此长文本字符串。之后,我想将其存储为数组,arraylist,列表,… 谁能帮我这个?因为互联网上的所有信息都只是逐行读取文件。提前致谢! 问题答案: 您可以使用或任何IO类读取文件。假设文件中包含该字
问题内容: 我有以下格式的数据: 现在,我尝试根据最后一个字段对文件进行递减排序。我尝试了以下命令,但是没有按照我们的预期排序。 什么是正确的方法? 这是样本数据。 问题答案: 使用 bash ,可以达到目的: 注意单引号字符串前面的美元符号。您可以在 bash 手册页 的ANSI- C报价部分中 阅读有关它的内容。
我一直在使用Pandas/Python在Windows中读取以制表符分隔的数据文件,没有任何问题。该数据文件在前三行中包含注释,随后是标题。 我现在试图阅读这个文件与我的Mac。我第一次在Mac上使用Python。)我得到以下错误。 如果将read_csv的error_bad_lines参数设置为False,我将获得以下信息,这些信息将一直持续到最后一行的末尾。 我需要为编码参数指定一个值吗?似乎
问题内容: 我正在做一个自学练习,以帮助我更多地了解Java,但是我一直陷在这个问题上。我有以下txt文件: 注意: 名称和爱好由制表符分隔 读取所有行并将其放入arraylist(name,hobby)的最佳方法是什么。棘手的部分是 有空格,必须将其放在一个数组下,显然我无法对其进行硬编码。这是我当前的代码: 我收到一个错误: java.lang.StringIndexOutOfBoundsEx