Ruby 从CSV文件解析嵌入的JSON
我在其中一列中接收到带有嵌入JSON数据的制表符分隔文件。我的目标是拆分列,然后做一些工作来处理JSON。 当我尝试使用内置的Ruby CSV库(使用Ruby 2.2.3)时,出现以下错误:Ruby 从CSV文件解析嵌入的JSON,ruby,csv,Ruby,Csv,我在其中一列中接收到带有嵌入JSON数据的制表符分隔文件。我的目标是拆分列,然后做一些工作来处理JSON。 当我尝试使用内置的Ruby CSV库(使用Ruby 2.2.3)时,出现以下错误: Illegal quoting in line 1. (CSV::MalformedCSVError) 这里有一个极简主义的例子来帮助说明这个问题。以下几行可以很好地工作: puts 'red,"blue",green'.parse_csv puts 'red,{blue},green'.parse_cs
Illegal quoting in line 1. (CSV::MalformedCSVError)
这里有一个极简主义的例子来帮助说明这个问题。以下几行可以很好地工作:
puts 'red,"blue",green'.parse_csv
puts 'red,{blue},green'.parse_csv
但此行会生成格式不正确的DCSVERROR消息:
puts 'red,{"blue"},green'.parse_csv
知道如何解析该文件并将中间值(恰好是JSON)作为字符串文本处理吗
提前谢谢 默认情况下,双引号(“
)是用于环绕可能包含CSV列分隔符(在您的案例中为制表符)的字段的字符
您可以通过将:quote\u char
选项设置为其他选项来解决此问题,例如backticks或\0
。此外,对于制表符分隔的数据,您需要设置:col\u sep
这会给你你想要的东西
'red,{“blue”},green'.parse_csv(引用字符:'`'))
=>[“红色”、“蓝色”、“绿色”]
%Q{red\t{“blue”}\tgreen}.parse_csv(引用字符:'`',列sep:“\t”)
=>[“红色”、“蓝色”、“绿色”]
请注意,如果
- JSON列包含制表符,不被
或:quote_char
- JSON数据包含
(例如,它包含反勾号):quote_char