JZ.*_*JZ. 37 ruby csv formatting
我正在使用带有大量数据的ruby CSV.read.库有时会遇到格式不正确的行,例如:
"Illegal quoting in line 53657."
Run Code Online (Sandbox Code Playgroud)
忽略该行并跳过它,然后遍历每个csv并修复格式将更容易.我怎样才能做到这一点?
Ray*_*ter 73
我有这样的问题 123,456,a"b"c
问题是CSV解析器在"出现时期望完全包围逗号分隔的文本.
解决方案使用引号字符除了"我确信不会出现在我的数据中:
CSV.read(filename, :quote_char => "|")
Wil*_*den 18
liberal_parsing对于这样的情况,可以从Ruby 2.4开始提供该选项.从文档:
设置为true值时,CSV将尝试解析与RFC 4180不符的输入,例如未加引号的字段中的双引号.
要启用它,请将其作为CSV read/parse/new方法的选项传递:
CSV.read(filename, liberal_parsing: true)
Run Code Online (Sandbox Code Playgroud)
尝试强制双引号字符"作为引号字符:
require 'csv'
CSV.foreach(file,{headers: :first_row, quote_char: "\x00"}) do |line|
p line
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22296 次 |
| 最近记录: |