作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
"\x00" 来修复它 ["col1-6ren">
我有一些 CSV 文件,例如:
col1,col "two",col3
所以我得到了 Illegal quoting
错误并通过设置 :quote_char => "\x00"
来修复它
["col1", "col\"two\"", "col3"]
但是有这样一行
col1,col2,"col,3"
稍后在该文件中
["col1", "col2", "\"col", "3\""]
然后我逐行读取文件并调用包裹在 block 中的parse_csv
。设置 :quote_char => "\""
, rescue
CSV::MalformedCSVError
异常并针对特定行设置 :quote_char => "\x00"
和重试
一切正常,直到我们排队
col1,col "two","col,3"
在这种情况下,它从异常中拯救
,设置:quote_char => "\x00"
结果是
["col1", "col\"two\"", "\"col", "3\""]
Apple Numbers 能够绝对正确地打开该文件。
parse_csv
是否有任何设置可以在不以某种方式预处理字符串的情况下处理此问题?
UPD 我显示文件中的 CSV 行和 p
打印的结果(数组)。我的字符串中没有实际的 \"
。
最佳答案
这是一个无效的 csv 文件。如果您有权访问源,您可以(要求)生成如下数据:
col1,"col ""two""","col,3"
如果没有,唯一的选择就是自己解析数据:
pseudocode:
while(read_line) {
bool InsideQuotes = false
for each_char_in_line {
if(char == doublequote)
InsideQuotes = !InsideQuotes
if(char == ',' and !InsideQuotes)
// separator found - process field
}
}
这也将处理像 col1,"col ""two""","col,3"
中的转义引号。
如果文件包含多行字段,则需要做更多的工作。
关于ruby - 如何在 ruby 中使用奇怪的引号读取 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46208718/
我是一名优秀的程序员,十分优秀!