【问题标题】:openCSV parse individual columnsopenCSV 解析单个列
【发布时间】:2012-06-14 23:16:28
【问题描述】:

我使用 tokenize 在 groovy 中编写了一个解析 .csv 文件的脚本,但最终并没有完全满足我的需求,我正在尝试使用 openCSV 库,但我不确定如何解析各个列。到目前为止,这是我的代码:

List<String[]> rows = new CSVReader(
    new InputStreamReader(getClass().classLoader.getResourceAsStream(inputFileString)))
        .readAll()

        rows.each { row ->
            row.each { it ->
                println it
            }
        }

这是我的输入数据:

1,"unknown","positive","full message","I love it."

所以我想弄清楚的是如何打印所述行中的选定列。还要提前感谢,我正在努力了解 groovy/java,我来自 Ruby 背景。

【问题讨论】:

    标签: java parsing csv groovy opencsv


    【解决方案1】:

    不确定您所说的 ' 是什么意思...如何打印所述行中的选定列'

    但是这个脚本(例如)为每一行打印第 4 列:

    @Grab( 'net.sf.opencsv:opencsv:2.3' )
    import au.com.bytecode.opencsv.CSVReader
    
    // This sets example to a 2 line string
    // I'm using it instead of a file, as it makes
    // an easier example to follow
    def example = '''1,"unknown","positive","full message","I love it."
                    |2,"tim","negative","whoop!","It's ok"'''.stripMargin()
    
    List<String[]> rows = new CSVReader( new StringReader( example ) ).readAll()
    
    rows.each {
      // print the 4th column
      println it[ 3 ]
    }
    

    打印出来的:

    full message
    whoop!
    

    【讨论】:

    • 这清楚了很多,最后一件事:如果我想打印多列怎么办?除了 it[] 默认值之外,我还需要创建一个单独的变量吗?
    • 应该可以只做:println it[ 1,3 ] 例如打印第二个和第四个元素
    • 再次感谢,我最终声明了一个单独的变量并进行了插值。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2018-06-04
    • 2019-05-17
    • 2018-07-19
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多