我正在使用Ruby的CSV庫來解析某些CSV。我有一個看似格式良好的CSV文件,我通過將Excel文件導出爲CSV來創建。Ruby:無法解析在OS X中導出爲CSV格式的Excel文件
但是CSV.open(filename, 'r')
導致CSV::IllegalFormatError
。
該文件中沒有流氓逗號或引號,也沒有其他任何可以看到可能導致問題的內容。
我懷疑問題可能是與行結束有關。我能夠解析通過文本編輯器(Aquamacs)手動輸入的數據。正是當我嘗試從Excel(用於OS X)導出的數據出現問題時。當我在vim中打開導出的CSV文件時,所有文本都出現在一行上,並在行之間出現^M
。
從文檔看來,您似乎可以爲open
提供行分隔符;但我不確定在這種情況下應該如何。
非常感謝 - 希望我可以爲你提供兩次有用的信息。 – grifaton
你能澄清一下'?,?\ r'在做什麼嗎?謝謝! –
?x返回字符x的代碼點,即一個數字。出於某種原因,這就是CSV.open期望看到的。因此,我們將字段分隔符指定爲',',將記錄分隔符指定爲否則麻煩的^ M,又名015,又名13,又名CR。順便說一句,vim替代命令的工作原理是因爲'\ r'表示模式中的CR,而替換中的NL,所以它實際上並不是一個空操作。 – DigitalRoss