CsvParser 不适用于缺少双引号
CsvParser not working for missing double quotes
我在文件中有一条消息,如下所示,我正在使用 com.univocity.parsers.csv.CsvParser
根据分隔符拆分字符串(在本例中为 -
)
1-bc-"name"-def-address
1-abc-"name-def-address
我创建我的 CsvParser
对象
private val settings = new CsvParserSettings()
settings.getFormat.setDelimiter('-')
settings.setIgnoreLeadingWhitespaces(true)
settings.setIgnoreTrailingWhitespaces(true)
settings.setReadInputOnSeparateThread(false)
settings.setNullValue("")
settings.setMaxCharsPerColumn(-1)
val parser = new CsvParser(settings)
并像这样解析输入消息:
for (line <- Source.fromFile("path\test.txt").getLines) {
println(parser.parseLine(line).toList)
}
输出为:
List(1, bc, name, def, address)
List(1, abc, name-def-address)
如果您看到输出,您可以看到对于第一条消息,字符串被正确拆分,但是对于第二条消息,它在第一个双引号之后将所有内容作为值。有谁知道为什么行为是这样的,我怎样才能得到想要的输出?我正在阅读每条消息作为一个字符串,它应该简单地将 quote/double 引号视为一个字符。
这里是这个库的作者。当在 -
定界符之后找到引号时,解析器将尝试查找结束引号。
最简单的解决方法是让解析器简单地忽略引号:
settings.getFormat().setQuote('[=10=]');
希望对您有所帮助。
我在文件中有一条消息,如下所示,我正在使用 com.univocity.parsers.csv.CsvParser
根据分隔符拆分字符串(在本例中为 -
)
1-bc-"name"-def-address
1-abc-"name-def-address
我创建我的 CsvParser
对象
private val settings = new CsvParserSettings()
settings.getFormat.setDelimiter('-')
settings.setIgnoreLeadingWhitespaces(true)
settings.setIgnoreTrailingWhitespaces(true)
settings.setReadInputOnSeparateThread(false)
settings.setNullValue("")
settings.setMaxCharsPerColumn(-1)
val parser = new CsvParser(settings)
并像这样解析输入消息:
for (line <- Source.fromFile("path\test.txt").getLines) {
println(parser.parseLine(line).toList)
}
输出为:
List(1, bc, name, def, address)
List(1, abc, name-def-address)
如果您看到输出,您可以看到对于第一条消息,字符串被正确拆分,但是对于第二条消息,它在第一个双引号之后将所有内容作为值。有谁知道为什么行为是这样的,我怎样才能得到想要的输出?我正在阅读每条消息作为一个字符串,它应该简单地将 quote/double 引号视为一个字符。
这里是这个库的作者。当在 -
定界符之后找到引号时,解析器将尝试查找结束引号。
最简单的解决方法是让解析器简单地忽略引号:
settings.getFormat().setQuote('[=10=]');
希望对您有所帮助。