- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 open csv 来读取只有 2 列的 CSV,例如:
"valueA1","valueB of A1"
,"valueB of A1"
,"valueB of A1"
,"valueB of A1"
"valueA2","valueB of A2"
,"valueB of A2"
,"valueB of A2"
,"valueB of A2"
而且它一直在继续,到目前为止一切都很好。当 B 列中的某些值带有某些字符时,我遇到了麻烦示例:
"valueA1","va"lueB" of A1"
,"valueB of A1"
,"valueB of A1"
,"valueB of A1"
"valueA2","valueB of A2"
,"valueB of A2"
,"valueB of A2"
,"valueB of A2"
当我的 B 列有类似 " 的内容,甚至在某些情况下有 : 的内容时,我打开的 csv 会丢失所有格式,而不是说我的下一行包含 2 个值它向我展示了像 36、48 这样疯狂的东西,并且因此丢失了大量内容。
我如何指定这些值位于 B 列内,并且不应该假设他需要创建一个新列?
我正在使用简单的构造函数
reader = new CSVReader(new FileReader(arquivo));
通过研究,我看到一些人说使用不同的构造函数,我尝试这样做
reader = new CSVReader(new FileReader(arquivo), ',','"');
但结果是一样的,因为构造函数只接受 char 我不能这样做 ","
最佳答案
首先,我仍然会明确设置分隔符和引号。您说您遇到了 ;
问题。
CSVReader reader = new CSVReader(new FileReader(arquivo), ',', '\"');
然后出现数据错误:文本值 va"lueB"of A1
,例如 Excel 会自动转义为:va""lueB""of A1
。我不知道 CSVWriter 会如何处理双引号。
侵入性最小的方法是在读取时纠正数据:
CSVReader reader = new CSVReader(new RepairingReader(new FileReader(arquivo)),
',', '\"', '\\');
这里我还指定了分隔符和引号的转义字符。
CSVReader
使用传递的或自行添加的 BufferedReader
并调用 readLine
。
public class RepairingReader extends BufferedReader {
public RepairingReader(Reader reader, int capacity) {
super(reader, capacity);
}
public RepairingReader(Reader reader) {
super(reader);
}
@Override
public String readLine() throws IOException {
String line = super.readLine();
if (line != null) {
line = line.replaceAll("([^,\\\\])\"([^,])", "$1\\\\\"$2");
}
return line;
}
}
这只是覆盖readLine
。它会替换前面(不是反斜杠,不是逗号)和后面(不是逗号)有字符的任何引号。替换应该是反斜杠后跟引号。
这不是一个完整的解析器,因为这样就可以自己实现 CSV 阅读器。
顺便说一句:FileReader
没有选项来设置用于将文件转换为 Unicode 字符串的编码。使用默认平台编码。因此,代码不可移植,文件应该采用本地编码。对于可移植软件,请使用 new InputStreamReader(new FileInputStream(file), encoding)
来代替。
关于java - opencsv,不能将值与“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26384257/
我使用了 opencsv 的“http://opencsv.sourceforge.net/#maven-integration ” maven 依赖项,如下所示: net.sf.openc
我正在尝试使用 HeaderColumnNameMappingStrategy 使用 opencsv 读取 csv 文件。 Opencsv 每次都将我的第一列 csv 填充为 null。 这是我的代码
使用 OpenCSV 库,调用 StatefulBeanToCsv.write()我的空值被包裹在引号中。 例子: String[] columns = new String[] { "Col
我正在使用 AndroidStudio,我的应用程序必须读取如下所示的 CSV 文件: "Anmeldung";"1576017126809898";"1547126680978123";"";"";
在我的主课 public static void main(String[] args) { CSVWriter writer = new CSVWriter(new Fi
我使用openCSV导入文件,但通常它只读取文件的一部分。它处理包含约 5k 行的文件,但通常 20k 对他来说是个问题(即使是 1 列的 CSV)。 当我尝试使用 BufferedReader 而不
我试图使用 openCSV java 库在 csv 文件中写入一些公式数据,但它只写入每个单元格中大约 90% 的字符串。是否有任何已知问题可能导致此行为? public static void ma
我正在使用 opencsv 2.3,它似乎没有像我预期的那样处理转义字符。我需要能够处理不使用引号字符的 CSV 文件中的转义分隔符。 示例测试代码: CSVReader reader = new C
我试图从分号分隔的文件中的倒数第二行和第三列获取值。我无法坐下来获取倒数第二行和第三列的值。 我一直在寻找一种方法来实现这一目标,但没有结果。如果有人能用一个例子为我指明正确的方向,我将不胜感激。 这
我正在尝试使用 opencsv 解析 csv 文件。文件中的最后一列有一个参数,实际上是 json。该 json 包含在“”中。问题是 opencsv 正在从 json 中删除一些 "导致我的代码中断
我使用 open csv 来读取只有 2 列的 CSV,例如: "valueA1","valueB of A1" ,"valueB of A1" ,"valueB of A1" ,"valueB of
我陷入了必须读取两个不同的 csv 文件并将它们存储在单个表中的情况。 CSV 文件1: salary,date,user 121,2016-08-01,admin 121,2016-08-01,ad
我有一个 CSV 文件,其中引号内有定界符或未闭合的引号,如何让 CSVReader 忽略引号内的引号和定界符。例如: 123|Bhajji|Maga|39|"I said Hey|" I am "5
我使用的是 opencsv 3.0 版本。由于某种原因,它没有将记录写出到 CSV 文件中。它适用于 2.3 版。但是,我想使用 CSVIterator 类。感谢您的帮助。 public void
我正在尝试使用 opencsv 解析一些公共(public)数据(3.10 版)。下面是获取 CSV 并将记录映射到 POJO 列表的代码片段: URL permitsURL = new URL("h
好的,我有一个 csv 文件: Summary heading1,heading2,heading3 value1,value2,value2 value1,value2,va
我需要有关在 Java 中解析 CSV 数据时遇到的问题的建议。 我有一个 CSV 文件,其中包含以下格式的数据 name, gender, address_first_line, address_s
我编写了一个脚本,使用 tokenize 在 groovy 中解析 .csv 文件,但最终没有完全满足我的需要,我正在尝试使用 openCSV 库,但我不确定如何解析各个列。这是到目前为止我的代码:
我正在使用 openCSV 的 CsvToBean 类。该 bean 具有日期字段。 @CsvDate(value = "yyyy-MM-dd") @CsvBindByPosition(positio
我有以下 CSV 文件, "id","Description","vale" 1,New"Account","val1" 我无法使用 OpenCSV 读取上述 CSV 文件。它无法读取 New"Acc
我是一名优秀的程序员,十分优秀!