openCSV анализирует отдельные столбцы

Я написал скрипт, анализирующий файл .csv в groovy с использованием tokenize, который в итоге не сделал именно то, что мне нужно, я пытаюсь использовать библиотеку 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.


person mrtriangle    schedule 14.06.2012    source источник


Ответы (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!
person tim_yates    schedule 15.06.2012
comment
это многое проясняет, последнее: что, если я хочу напечатать несколько столбцов? мне нужно создать отдельную переменную, отличную от значения по умолчанию it[]? - person mrtriangle; 15.06.2012
comment
должен иметь возможность просто сделать: println it[ 1,3 ] например, чтобы напечатать второй и четвертый элемент - person tim_yates; 15.06.2012
comment
еще раз спасибо, в итоге я объявил отдельную переменную и интерполировал. :) - person mrtriangle; 21.06.2012