21
我一直有一段難以置信的時間,試圖在ruby-1.9.2中導入CSV文件。導入CSV引用錯誤令我瘋狂
我試圖解析的文件有:塔中
- 逗號列內
- 報價
- 使用一個 '@' 爲:col_sep
csv.txt(代表性輸入,實際爲101k線):
㔾@㔾@jié@"seal" radical in Chinese characters, (Kangxi radical 26)
我的代碼:
require 'csv'
CSV.foreach("/Users/adam/Desktop/csvtest.txt", {:col_sep => "@"}) do |row|
puts row.to_s
end
我想要的輸出:
["㔾", "㔾", "jié", "\"seal\" radical in Chinese characters, (Kangxi radical 26)"]
我得到的輸出:
CSV::MalformedCSVError: Unclosed quoted field on line 1.
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/CSV.rb:1910:in `block in shift'
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/CSV.rb:1825:in `loop'
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/CSV.rb:1825:in `shift'
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/CSV.rb:1767:in `each'
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/CSV.rb:1202:in `block in foreach'
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/CSV.rb:1340:in `open'
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/CSV.rb:1201:in `foreach'
from (irb):31
from /Users/adam/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
它說有未關閉的報價精密組件,但我可以看到的是,報價打開和關閉。
轉義引號沒有任何作用。我得到相同的錯誤([email protected]""seal"" r...
)。 將它們更改爲單引號可使其起作用([email protected]'seal' r...
)。 問題是我需要他們在雙引號。
任何想法?
+1 CSV規格。被完全濫用和忽略,與HTML類似。對於這兩種情況,有時我會在將數據交給解析器之前解決數據問題。我認爲這也是解決這個問題的方法,但我喜歡用'quote_char =>「\ x00」'來欺騙解析器。不錯的工作。 –
我有一個實際上具有nul字符的'bcp' MSSQL轉儲來的UTF-16。爲了好玩,我選擇了雪人角色(☃)作爲替補。 :) –
這個''\ x00「'竅門很漂亮:-) – Avishai