【发布时间】:2015-12-24 13:20:12
【问题描述】:
我正在尝试使用以下方法解析逗号分隔的字符串:
val array = input.split(",")
然后我注意到一些输入行在引号内有“,”:
data0, "data1", data2, data3, "data4-1, data4-2, data4-3", data5
*注意数据不是很干净,所以有些字段在引号内,有些则不在
我如何将这样的行分成:
array(0) = data0
array(1) = data1
array(2) = data2
array(3) = data3
array(4) = data4-1, data4-2, data4-3
array(5) = data5
【问题讨论】:
-
解析 CSV 文件可能是出了名的棘手,因为它在引号周围的行为,以及引号中包含的逗号和引号。我建议引入一个以稳健地处理所有边缘情况而著称的库。您可以考虑的选项包括scala-csv 和traversable-csv。或者使用像 opencsv 这样的 Java 库。
-
否则,如果您不想或不能使用库,您可以查看this SO answer 或this SO answer 以了解其他人如何处理滚动您自己的 CSV 解析器。
-
@Shadowlands 您能否在答案中总结您的 cmets(因为我认为您已经展示了许多有价值的方法,其他人可以从中受益。)谢谢。
-
@MartinSenne 当然,很高兴将其作为答案(尽管我没有更多要补充的内容)。