代码之家  ›  专栏  ›  技术社区  ›  Thufir

遍历从opencsv生成的映射

  •  0
  • Thufir  · 技术社区  · 6 年前

    我有一列数据,输出自 Google Sheets 作为 CSV ,也来自 LibreOffice 作为 猪瘟病毒 也。我试着用 OpenCSV 但我只能得到一小部分可用的数据。

    我怎么看这个文件?我真的看不到任何逗号 猪瘟病毒 文件…但它只是一列数据。

    文件:

    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);
            }
        }
    }
    

    坦率地说,我不能确定图书馆是否在文件中以一种时髦的方式阅读,或者文件以某种方式被破坏,或者是什么。我会找的 猪瘟病毒 从网站上,但不确定这是什么。我不认为库解析不正确,但是我也看不到这个数据的问题。

    从电子表格中导出数据的方法只有 猪瘟病毒 我试过一些。文件的内容并不重要,但我要处理的是这种结构:没有内容的行,只有一列,特殊字符。

    阅读 file as text 提供所需的输出…

    1 回复  |  直到 5 年前
        1
  •  1
  •   kiner_shah Ahamed Raaseem    5 年前

    看起来它的工作原理和其他的csvreaders类似 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());
    
    }