gpt4 book ai didi

java - 遍历 OpenCSV 生成的 Map

转载 作者:行者123 更新时间:2023-12-02 10:23:41 34 4
gpt4 key购买 nike

我有一列数据,从 Google Sheets 输出为 CSV,也从 LibreOffice 输出为 CSV 也是如此。我尝试使用 OpenCSV 编码这两个文件,但只获得一小部分可用数据。

如何读取该文件?我在这个 CSV 文件中确实没有看到任何逗号...但它只是一列数据。

文件:

thufir@dur:~/jaxb$ 
thufir@dur:~/jaxb$ head input.csv
Field 1
Foo # 16

bar

baz

fdkfdl

fdsfdsfsdfgh
thufir@dur:~/jaxb$

输出:

thufir@dur:~/NetBeansProjects/BaseXFromJAXB$ 
thufir@dur:~/NetBeansProjects/BaseXFromJAXB$ gradle run

> Task :run
Jan 10, 2019 3:36:08 PM net.bounceme.dur.basexfromjaxb.csv.ReaderForCVS printMap
INFO: Foo # 16
Jan 10, 2019 3:36:08 PM net.bounceme.dur.basexfromjaxb.csv.ReaderForCVS printMap
INFO: Field 1
Jan 10, 2019 3:36:08 PM net.bounceme.dur.basexfromjaxb.csv.ReaderForCVS printMap
INFO: Foo # 16

BUILD SUCCESSFUL in 1s
3 actionable tasks: 1 executed, 2 up-to-date
thufir@dur:~/NetBeansProjects/BaseXFromJAXB$

代码:

package net.bounceme.dur.basexfromjaxb.csv;

import com.opencsv.CSVReaderHeaderAware;
import java.io.File;
import java.io.FileReader;
import java.net.URI;
import java.util.Collection;
import java.util.Map;
import java.util.logging.Logger;

public class ReaderForCVS {

private static final Logger LOG = Logger.getLogger(ReaderForCVS.class.getName());
private Map<String, String> values;

public ReaderForCVS() {
}

public void unmarshal(URI inputURI) throws Exception {
FileReader f = new FileReader(new File(inputURI));
values = new CSVReaderHeaderAware(f).readMap();
}

public void printMap() {
Collection<String> stringValues = values.values();
for (String s : stringValues) {
LOG.info(s);
}

for (Map.Entry<String, String> item : values.entrySet()) {
String key = item.getKey();
String value = item.getValue();
LOG.info(key);
LOG.info(value);
}
}
}

坦率地说,我无法判断库是否以一种奇怪的方式读取文件,或者文件是否以某种方式被破坏,或者是什么。我将从网站上查找 CSV,但不确定它所建立的内容。我不认为该库无法正确解析,但我也看不到此数据的问题。

将电子表格中的数据导出为 CSV 的方法只有这么多,我已经尝试了几种。文件的内容并不重要,但这种结构:没有内容的行,只有一列,特殊字符,就是我正在处理的。

阅读 file as text给出所需的输出...

最佳答案

看起来它的工作原理与其他 CSVReader 类似 OpenCSV Guide Reading 。这是我使用的一些示例代码,它似乎有效:

CSVReaderHeaderAware csvReaderHeaderAware= new CSVReaderHeaderAware(new StringReader(DAOConstants.IND_DATA));
while (((values = (Map<String, String>) csvReaderHeaderAware.readMap())) != null)
{
for (Map.Entry<String,String> entry : values.entrySet())
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

}

关于java - 遍历 OpenCSV 生成的 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54138568/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com