簡體   English   中英

在Ruby 1.8.7中使用FasterCSV在網上非法報價

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM