java - BeanIO unquotedQuotesAllowed 在 CSV 中不起作用

标签 java csv bean-io

我想要用分隔符解析文件。我使用BeanIO 2.1.0。我有一个文件,其中包含一个带有双引号的字符串:

"TEST"/37326330|TEST2

在配置中我设置参数:

<stream name="csvStream" format="csv">
     <parser>
         <property name="delimiter" value="|"/>
         <property name="unquotedQuotesAllowed" value="true"/>
     </parser>
</stream>

但是它不起作用!我收到错误:

org.beanio.MalformedRecordException: Malformed record at line 1: Invalid character found outside of quoted field at line 1

但是为什么呢?为什么这个参数不起作用?

最佳答案

我假设您想要保留/保留双引号 (")。

unquotedQuotesAllowed 配置选项仅适用于 CSV 流,但根据您的示例测试数据,您使用管道符号 (|) 作为分隔符。是的,您可以更改 CSV 流的分隔符,但我认为最好仅使用配置为 delimited 格式的流映射。在我看来,这更容易使用,并且您不需要遵守 CSV 格式的所有规则和微妙之处。

然后我将使用以下内容:

<stream name="csvStream" format="delimited">
  <parser>
    <property name="delimiter" value="|"/>
  </parser>
  <record name="...">
  ....
  </record>
</stream>

使用上面的映射,我得到以下输出:

Field1: "TEST"/37326330, Field2: TEST2

关于java - BeanIO unquotedQuotesAllowed 在 CSV 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412748/

相关文章:

android - BeanIO - 加载默认流工厂实现类失败

java - BeanIo 无法读取特殊字符

java - 立即重新抛出catch block 并使用finally

java - 无法制作正确的表格,GPA 计算无法返回正确的成绩

csv - Golang CSV 读取 : extraneous "in field error

java - 获取文件csv上传并添加mysql

java - 端口未在嵌入式 tomcat 中重定向

java - 如何设置 netbeans 中的记录器将异常信息打印到文件?

python - Dataframe 的重复数据删除返回空对象

java - 想要从 beanIO 字段名称标签写入 csv 中的 header