【发布时间】:2016-05-10 11:05:16
【问题描述】:
我正在尝试在 csv 文件中添加更改数据:
这是示例数据:
DATE status code value value2
"2016-01-26","Subscription All","119432660","1315529431362550","0.0080099833517888"
"2016-01-26","Subscription All","119432664","5836995058433524","0.033825584764444"
"2016-01-26","Subscription All","119432664","8287300074499777","0.076913377834744"
"2016-01-26","Subscription All","119432664","14870697739968326","0.0074188355187426"
我用来格式化数据的代码:
CSVReader reader = new CSVReader(new FileReader(new File(fileToChange)), CSVParser.DEFAULT_SEPARATOR, CSVParser.NULL_CHARACTER, CSVParser.NULL_CHARACTER, 1)
info "Read all rows at once"
List<String[]> allRows = reader.readAll();
CSVWriter writer = new CSVWriter(new FileWriter(fileToChange), CSVWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER)
writer.writeAll(allRows)
writer.close()
我得到的输出是这个,添加了额外的引号而不是删除它。
""2016-01-26"",""Subscription All"",""119432660"",""1315529431362550"",""0.0080099833517888""
""2016-01-26"",""Subscription All"",""119432664"",""5836995058433524"",""0.033825584764444""
""2016-01-26"",""Subscription All"",""119432664"",""8287300074499777"",""0.076913377834744""
""2016-01-26"",""Subscription All"",""119432664"",""14870697739968326"",""0.0074188355187426""
我想删除引号。 请有人帮忙。
另外,是否可以将日期格式更改为 yyyymmdd 而不是 yyyy-mm-dd?
allRows.each { String[] theLine ->
String newDate = theLine[0].replaceAll('-', '')
String newline = theLine.eachWithIndex { String s, int i -> return i > 0 ? s : newDate}
writer.writeLine(newline)
}
谢谢
【问题讨论】:
-
好像不是bug,csv reader读取qoute字符作为字符串的一部分,writer将其作为值的一部分输出,而且esca[es作为double qoute.在这里查看更多信息:stackoverflow.com/questions/13969254/…
-
我会 +1,但似乎当天没有票...叹息!
标签: groovy formatting opencsv