[英]Illegal quoting on line using FasterCSV in ruby 1.8.7
從SQL轉儲分析內容時,轉儲文件為TXT格式,帶有制表符(\\ t)分隔符,我遇到“非法引用”錯誤。
require 'rubygems'
require 'faster_csv'
begin
FasterCSV.foreach(excel_file, :quote_char => '"',:col_sep =>'\t', :row_sep =>:auto, :headers => :first_row) do |row|
col= row.to_s.split(/\t/)
if col[3]!="" or !col[3].empty?
color_value=col[3].to_s.capitalize
#Inser Color
color=Color.find_or_create_by_name(:name=>color_value)
elsif col[3].empty?
color_id= nil
end
end
rescue Exception => e
puts e
end
該程序已成功執行並運行,但是存在如下所示的無效數據(@ font-face ...),這意味着執行終止,並出現“第3行非法引用”錯誤。
ID Name code comments
1 white 234 good
2 Black 222
3 red 343 @font-face { font-family: "Verdana"; .....}
有人可以建議我如何在列中出現無效數據時跳過嗎?
提前致謝。
您可以將ASCII
碼用於NULL
字符- \\0x00
這樣:
FasterCSV.foreach(excel_file, :quote_char => '\0x00',:col_sep =>'\t', :row_sep =>:auto, :headers => :first_row) do |row|
...
end
您可以在此處找到一些ASCII字符的圖表: http : //www.bluesock.org/~willg/dev/ascii.html
我不確定這是否可以解決您所看到的錯誤,但是您需要在轉義字符周圍使用雙引號,例如:
:col_sep => "\t"
FasterCSV對於格式錯誤的數據不是很好。 我不知道有解決方案。
但是-如果您的示例文件實際上不包含任何使用“的引號,則可能僅使用其他quot_char(例如')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.