我在打开 csv 时也面临同样的问题,并且为了解决我使用转义字符的问题。
例如:
CSVReader csvReader = new CSVReader(new FileReader(fileName), seprator,escaped_character);
在这里打开的csv默认使用双引号作为escape_character(据我所知)
在我的情况下,我使用分隔符作为管道符号 (|)
A2|GAA|Thilina|9022V|1|2|3|4|"Rubasingha"|'Abc|MATARA"|'No'|2012|1668.88
在这里“Rubasingha”打开和关闭双引号,在“No”中也打开和关闭单引号。这两个在默认打开的 csv 中完美地工作
但是当我们使用'Abc - 只打开单引号 - 这也可以正常工作
但是MATARA"或"MATARA - 在这里我们有一个双引号 - 在我的情况下,这会在使用 open csv 读取 CSV 时产生错误
为了解决这个问题,我参考了这个页面(http://cs.swan.ac.uk/~csbob/teaching/java/JavaDemoNetbeans/opencsv-2.3/doc/)
有一些构造函数可以提供您自己的分隔符和引号字符。假设您使用制表符作为分隔符,您可以执行以下操作:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t');
如果你单引号你的转义字符而不是双引号,你可以使用三个 arg 构造函数:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t', '\'');
如果您知道内容直到文件后面才开始,您也可以跳过文件的前几行。因此,例如,您可以通过执行以下操作跳过前两行:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t', '\'', 2);
所以我将我的默认转义字符更改为 (^) 符号,而不使用双引号作为转义字符。
CSVReader csvReader = new CSVReader(new FileReader(fileName), '|','^');
这是我解决问题的方法。谢谢