我有CSV與像一些一行:如何在ruby中使用奇怪的引號讀取CSV?
col1,col "two",col3
,所以我得到Illegal quoting
錯誤並修復,通過設置:quote_char => "\x00"
["col1", "col\"two\"", "col3"]
但像
col1,col2,"col,3"
後線在那個文件中
["col1", "col2", "\"col", "3\""]
然後我一行一行地讀取文件,並調用parse_csv
包裝在塊中。設置:quote_char => "\""
,rescue
CSV::MalformedCSVError
例外和針對特定行設置:quote_char => "\x00"
和retry
所有作品完美,直到我們在這種情況下,從例外它rescue
小號獲得線
col1,col "two","col,3"
,設置:quote_char => "\x00"
和結果是
["col1", "col\"two\"", "\"col", "3\""]
Apple Numbers能夠完全正確地打開該文件。
parse_csv
是否有任何設置來處理這個沒有預處理字符串的方式?
UPD我顯示CSV行,因爲它是在p
打印文件和結果(數組)。我的字符串中沒有實際的\"
。
不幸的是,我不能訪問源代碼,我認爲char這樣的字符處理會導致巨大的性能損失,這部分代碼處理大的CSV文件(數百萬條記錄) – Yaroslav
@雅羅斯拉夫那麼,讓我們希望沒有字段像',24「監視器,'在該文件:) –
@Yaroslav關於性能:我不知道Ruby或它的性能,但我想如果行可以被視爲數組不會那麼糟糕。 C/C++中的相同算法實際上比標準解析器更快。也許你可以檢查Ruby是否支持內存映射文件,這也可以不需要readline(將字符串複製到緩衝區中)。 –