在 Java 中拆分其数据中包含逗号和特殊字符的 csv 文件

Posted

技术标签:

【中文标题】在 Java 中拆分其数据中包含逗号和特殊字符的 csv 文件【英文标题】:Splitting a csv file which is having comma snd special characters in its data in Java 【发布时间】:2018-02-12 06:16:50 【问题描述】:

我想使用 java 拆分一个 CSV 文件,该文件在其数据中包含逗号和其他特殊字符。我尝试了像line.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", -1); 和更多类似的东西这样的正则表达式拆分方式。但是在某些行中拆分是错误的。

CSV 有大约 3000 行。他们中的一些人没有正确地分裂。 请建议一种标准方法来拆分 csv 文件中的数据。

【问题讨论】:

已经有大量的 CSV 解析库,任何一个都可以使用。 你的正则表达式应该如何知道逗号是否是分隔符? 我在 Commons CSV 上取得了成功。用户指南在这里:commons.apache.org/proper/commons-csv/user-guide.html CSV API for Java的可能重复 【参考方案1】:

如果您有标准桌面或 Web 应用程序,Apache-CSV 或 OpenCSV可能会对您有所帮助。如果您正在处理某种“大数据”技术,请查看Spark。

【讨论】:

3000 行!= 大数据 @thomas 同意。但是没有人告诉你这是一百万个 csv 文件中的一个,还是一行包含 100MB 的数据。根据这个问题,这听起来不太可能,但我想指出,纯粹的行数并不能告诉你任何事情。【参考方案2】:

将所有特殊字符替换为+,然后拆分

String result = str.replaceAll("[^\\dA-Za-z ]", "").replaceAll("\\s+", "+");

【讨论】:

【参考方案3】:

您可以使用制表符(\t),而不是使用逗号分隔值。 文件可以以 .csv 扩展名保存。它对我有用。

【讨论】:

以上是关于在 Java 中拆分其数据中包含逗号和特殊字符的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在静态文本标签中包含特殊字符?

[python]特殊输入格式(输入中包含空格逗号等)

从值中包含逗号的 JSON 中提取键值对

如何正确处理Shell 函数传人参数中包含的特殊字符

如何将拆分的字符串保存在C结构中包含的字符数组中?

问题 cookie 不保存特殊字符 解决办法