我有一个CSV文件,它将在引号内有分隔符或未关闭的引号,我如何使CSVReader忽略引号和引号内的分隔符。例如:
123|Bhajji|Maga|39|"I said Hey|" I am "5|'10."|"I a do "you"|get that"
这是文件的内容。
下面的程序读取csv文件。
@Test
public void readFromCsv() throws IOException {
FileInputStream fis = new FileInputStream(
"/home/netspurt/awesomefile.csv");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
CSVReader reader = new CSVReader(isr, '|', '\"');
for (String[] row; (row = reader.readNext()) != null;) {
System.out.println(Arrays.toString(row));
}
reader.close();
isr.close();
fis.close();
}
我收到了这样的订单。
[123, Bhajji, Maga, 39, I said Hey| I am "5|'10., I am an idiot do "you|get that]
在你
之后报价发生了什么
编辑: 开放电脑依赖 com.开放电脑 3.4
抱歉,但我没有足够的代表添加评论,所以我必须添加一个答案。
对于您最初提出的在you之后引号发生了什么的问题,答案与I之前引号发生了什么是一样的。
对于CSV数据,分隔符前后的引号是字段数据的开始和结束,因此被删除。这就是为什么缺少这两个引号的原因。
由于CSV格式指定了引号("),如果它在字段中,我们需要在它前面加上另一个引号(")。所以这解决了我的问题。
123|Bhajji|Maga|39|"I said Hey|"" I am ""5|'10."|"I a do ""you""|get that"
参考:https://www.ietf.org/rfc/rfc4180.txt
来自com.opencsv:opencsv的源代码:
/**
* Constructs CSVReader.
*
* @param reader the reader to an underlying CSV source.
* @param separator the delimiter to use for separating entries
* @param quotechar the character to use for quoted elements
* @param escape the character to use for escaping a separator or quote
*/
public CSVReader(Reader reader, char separator,
char quotechar, char escape) {
this(reader, separator, quotechar, escape, DEFAULT_SKIP_LINES, CSVParser.DEFAULT_STRICT_QUOTES);
}
查看 http://sourceforge.net/p/opencsv/source/ci/master/tree/src/main/java/com/opencsv/CSVReader.java
有一个带有附加参数转义的构造函数,它允许转义分隔符和引号(根据javadoc)。
我正在使用opencsv读取csv文件。有时csv文件中包含单引号或双引号。如何读取它们而不更改csv文件本身中的数据。 现在,如果我用两个单引号替换一个单引号,它工作正常,与双引号相同,用两个替换单个引号,它的工作原理。但我不想碰源文件。 要访问的代码如下: 这样做的结果是跳过下一行(也包含双引号),插入所有奇数行,跳过偶数行 提前谢谢
本文向大家介绍JavaScript 转义引号,包括了JavaScript 转义引号的使用技巧和注意事项,需要的朋友参考一下 示例 如果您的字符串用单引号引起来,则需要用反斜杠转义内部文字引号 \ 双引号也是如此: 如果要在字符串中存储HTML表示形式,则必须特别注意转义引号,因为HTML字符串大量使用了引号,即在属性中: HTML字符串中的引号也可以使用'(或')表示为单引号,而
问题内容: 如果JSON字符串如下,如何转义双引号? 我想对值 TEST中 的次级双引号进行转义。 我已经尝试了以下方法,但是它不起作用。 我想念什么? 问题答案: 它应该是: 首先,我将外部引号更改为单引号,因此它们不会与内部引号冲突。然后,我将反斜杠放在最里面的引号之前,以使其转义。而且我避开了反斜杠,以便按字面意义对待它。 使用JSON函数可以获得相同的结果:
问题内容: 我该如何工作? 将在引起此故障。我从类似的文件运行它,但也无法从命令行运行。我试过使用and 和(unicode ) 我被卡住了 问题答案: 我有同样的问题。最简单的解决方案是,除了用单引号引起来的撇号外,还要使用反斜杠来将其引起来。 对于您的用例,更改为,它应该可以工作。 另一种方法是将POST数据()用双引号引起来,同时用反斜杠转义JSON字符串中所有嵌套的双引号。
opencsv一个简单的CSV解析Java包。它封装了CSV格式文件的输出和读入,可以自动处理CSV格式中的特殊字符。
问题内容: 我在Java EE服务器上使用GSON为视图提供一些json。在某个对象中,我有很长的文字,可以包含任何内容(例如“多么的“好”新闻!”)。 我很惊讶,默认情况下,GSON不会转义双引号,因此它不会生成有效的JSON。 有这样做的好方法吗? 问题答案: 也许我不理解您的问题,但是我能够让GSON处理带引号的字符串,而无需进行任何设置或更改。 输出: 也许我不明白您的要求?