簡體   English   中英

如何從CSV文件中讀取特定的列?

[英]How to read specific columns from CSV file?

我有一個包含5個欄位的csv檔案。 在5列中,我只想閱讀第二和第四列,這是進行進一步處理所必需的。 現在,我正在使用opencsv api的readAll()方法進行讀取。 通過使用此方法,我必須處理所有列以獲得第二和第四列的值。

有什么辦法讀取所需列的值,即從csv文件讀取第二和第四值?

是正確的方法還是我應該使用其他方法?

如果性能是一個問題,那么我建議您實現自己的解析器。 opencsv不提供此類功能。 可能是因為性能方面的勝利不會那么大。

我不這么認為。

為了確定哪一列具有哪個索引,csv解析器必須處理整行或至少處理到您所擁有的最后一列(在您的情況下為第四列)。 即使您的數據是固定長度的,您仍然必須讀取整行,以便知道子字符串的邊界。

如果存在內存使用問題,那么使用CSVReader#readAll()不是最佳選擇。 在這種情況下,我建議改用CSVReader#iterator()並按返回數組的索引訪問您的列,例如myCsvRow[1]myCsvRow[3]

使用Commons CSV,您可以遍歷csv元素並使用列標簽讀取特定的列。

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

為了讀取特定的列,您可以將每個csvRecord轉換為Map並按以下方式獲取其值:

List<CSVRecord> aCSVList == aCSVParser.getRecords();
...
for (CSVRecord aCSVRecord : aCSVList)
{
   ...
    Map<String, String> aCurrentMap = aCSVRecord.toMap();
    aCurrentMap.get("ColumnLabel");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM