2

我正在尝试将 csv 转换为 csv。我的分隔符是,,输入中有某些文本也带有逗号示例:"Fun,Chair,tables"但它将用引号括起来。Data Weave 认为这是分隔符,并在响应中分成不同的列。

请找到输入 CSV 文件

 sequence,items
 1,Fun
 2,"Fun,chairs,tables"
 3,Games

但得到回应

Number,itemDetails
1,Fun
2,Fun\,Chair\,tables
3,Games

在上面的响应中,第二个被拆分了,我没想到我的 dataweaver

  %dw 1.0
  %output application/csv header=true 
   ---
  payload map { 
   Number:$.sequence,
   itemDetails:$.items

预期的反应是

 Number,itemDetails
 1,Fun
 2,"Fun,chairs,tables"
 3,Games

这里的问题是"Fun,chairs,tables",双引号应该作为测试字段,而不是data weaver将其视为分隔符。在数据编织标题中,尝试使用quote= " "and escape=" "。但不工作。我在 Datamapper 上尝试过同样的事情,工作得很好。相信需要在标题上做一些事情,但不确定是什么??还检查了 Data Weave CSV 设置中读取配置属性中的属性。没有帮助。

编辑:使用 DataWeaver 转义序列, %output application/csv header=true escape="\"" 下面是响应

Number,itemDetails
1,Fun
2,Fun",Chair",tables
3,Games

您的想法和建议会有所帮助。提前致谢。

4

4 回答 4

1

你试过 escape="\"" 吗?我认为这会转义双引号

于 2015-11-05T17:36:43.323 回答
0

我们必须像下面这样更改 reader 属性。我在阅读 csv 输入时也遇到了同样的问题。

<dw:reader-property name="escape" value="&quot;"/>

以上适用于我的情况并解决了问题

于 2019-11-15T04:19:27.810 回答
0

您可以自己将值括在引号中

%dw 1.0
%output application/csv header=true
---
payload map ((item , index) -> {
    Number: item.sequence,
    itemDetails: item.items
} when index != 1
otherwise {
    Number: item.sequence,
    itemDetails: "\"" ++ item.items ++ "\""
})

输出

Number,itemDetails
1,Fun
2,"Fun\,chairs\,tables"
3,Games
于 2017-02-08T14:21:07.203 回答
0

尝试

%output application/csv quoteValues=true ,escape =" "
于 2017-01-17T13:10:28.347 回答