我有来自CSV文件的数据已经加载到内存中.所以我可能有这样的事情:
csv_string = 'Value 1,Value 2,"Hey, it\'s value 3!",Value 4 has "some quotes"'
Run Code Online (Sandbox Code Playgroud)
显然我不想这样做csv_string.split(",").由于看起来像这样拆分CSV风格的字符串可能不是那么罕见的需要,我想知道是否已经有一个解决方案.
对于解析CSV,Ruby附带了csv库:
require 'csv'
CSV.parse(csv_string)
# => [['Value 1', 'Value 2', "Hey, it's value 3!", 'Value 4 has "some quotes"']]
Run Code Online (Sandbox Code Playgroud)
不幸的是,您的字符串实际上并不包含有效的CSV,因此您真正得到的是以下异常:
# CSV::MalformedCSVError: Illegal quoting on line 1.
Run Code Online (Sandbox Code Playgroud)
由于您的数据实际上并不符合任何通用标准,因此显然没有通用的解析器,您必须自己编写.
或者,您可以将数据更改为有效的CSV,例如:
c = %q[Value 1,Value 2,"Hey, it's value 3!","Value 4 has ""some quotes"""]
CSV.parse(c)
# => [['Value 1', 'Value 2', "Hey, it's value 3!", 'Value 4 has "some quotes"']]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5754 次 |
| 最近记录: |