当前位置: 首页 > 知识库问答 >
问题:

如何从CSV文件中读取特定列?

孔光赫
2023-03-14

我有一个包含5个字段(列)的csv文件。在5列中,我只想读第二列和第四列,这是进一步处理所需的。现在我正在使用opencsv api的readAll()方法进行读取。通过使用这种方法,我必须处理所有列,以获得第二列和第四列的值。

有没有办法读取所需列的值,即从csv文件中读取第二个和第四个值?

这是正确的方法还是我应该使用其他方法?

共有3个答案

微生令雪
2023-03-14

使用Commons CSV,您可以遍历csv元素并使用列标签读取特定列。

注:(Common CSV是openCsv和其他csv解析器的统一)。http://commons.apache.org/proper/commons-csv/

要读取特定列,可以将每个csvRecord转换为地图,并获得其值,如下所示:

List<CSVRecord> aCSVList == aCSVParser.getRecords();
...
for (CSVRecord aCSVRecord : aCSVList)
{
   ...
    Map<String, String> aCurrentMap = aCSVRecord.toMap();
    aCurrentMap.get("ColumnLabel");
}
逄俊贤
2023-03-14

我不这么认为。

为了确定哪一列有哪个索引,csv解析器必须处理整行或至少到您要拥有的最后一列(在您的情况下是第四列)。即使您的数据长度固定,您仍然必须读取整行,以便您知道子字符串的边界。

如果内存使用是一个问题,那么使用CSVReader#readAll()不是最佳选择。在这种情况下,我建议使用CSVReader#iterator()代替并通过返回器数组的索引访问您的列,例如myCsvRow[1]myCsvRow[3]

冯开诚
2023-03-14

如果性能是一个问题,从你的问题来看,我建议实现你自己的解析器。opencsv不提供这样的功能。可能是因为表演的胜利不会那么大。

 类似资料:
  • 示例CSV: 我试图只捕获特定的列,例如、、和。 我看到的代码使我相信我可以通过相应的编号调用特定的列,因此:将对应于,使用迭代每一行将产生第2列中的所有项。只是它没有。

  • 问题内容: 我正在尝试解析一个csv文件,并仅从特定列中提取数据。 范例csv: 我想只捕获特定的列,说,,和。 我看过的代码使我相信我可以通过其对应的编号来调用特定的列,即:将对应于2并遍历每一行使用会产生列2中的所有项目。只有它不能。 到目前为止,这是我所做的: 并且我希望这只会打印出我想要的每一行的特定列,除非不是,我只会得到最后一列。 问题答案: 你会得到从这个代码的最后一列的唯一方法是,

  • 我有一个csv文件,其中包含4个字段(列)。在4列中,我想读第二列,想读csv文件的特定列的第一个名称,并使用Java计算列记录。请帮忙。

  • 问题内容: 我有一个包含100行的CSV文件。 如何读取特定行? 我想读第9行或第23行等? 问题答案: 您可以使用来过滤文件,如下所示:

  • 我是R的新手,想读一个csv文件。但是当我试图阅读它时,我遇到了错误。我的csv文件如下: 当我在RStudio中使用此命令时,我得到了错误:命令: 错误: 读取时出错。表(file=file,header=header,sep=sep,quote=quote,:不允许重复的“row.names” 我还尝试删除错误并使用此命令: 但是当我查看输出时,它不能保持方阵的结构。你能帮我做什么吗?

  • 问题内容: 我正在尝试使用php从文本文件中读取特定行。这是文本文件: 我如何使用php获取第二行的内容?这将返回第一行: ..但我需要第二个。 任何帮助将不胜感激 问题答案: 文件—将整个文件读入数组