我在解析CSV文件时遇到了一个问题,其中我得到了以下错误:
CSV::MalformedCSVError:第3行非法引用。
RAILS代码问题:
csv = CSV.read(args.local_file_path, col_sep: "\t", headers: true)
CSV文件中的第3行是:
A-067067 VO VIA CE 0 8 8 SWCH Ter 4, Loc Is Here, Mne, Per Fl Auia/Sey I
我正在尝试解析一些CSV,其中包含一些随机JSON。JSON有双引号:
csv = CSV.parse('example,json=[{"json": "obj"}],endexample')
CSV::MalformedCSVError: Illegal quoting in line 1.
from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1925:in `block (2 levels) in shift'
from /Users/
使用ruby 2.7。 在解析csv文件时,如果该文件是在unix-ish计算机上创建的,然后在windows计算机上进行编辑,我们可以得到一个文件,其中第1行以\n结尾,第2行为空并以\r\n结尾,第3行也以\n结尾。这导致在CSV::MalformedCSVError (New line must be <"\n"> not <"\r"> in line 2.)中,输入字符串是UTF8编码的。 我没有找到任何csv类的幸运,所以我想到的两个选项是解析CSV的每一行,这将是一个很大的重写,或者用gsub()之类的东西“修复”输入流。
当其中一列包含双引号“字符”时,我该如何解析CSV文件?我收到“第xxx行缺少或丢失引号”错误,因为其中有一个尾随的双引号。确切的错误是“第58行缺少或丢失引号(CSV::MalformedCSVError)”。数据来自解析另一个设备(防火墙)配置的应用程序,并且“已被管理员作为注释添加到此设备的配置中,因此超出了我的控制范围。”
示例输入数据(无法提供文件,它们本质上是敏感的):
"Table 1 Firewall Policy from INT to EXT administrative service rules on TestFirewall","1",
我尝试过各种迭代:编码和选项,但都没有成功。文件是使用python模块创建的,打开了quote_all选项。它使用默认的quote_char =‘“和编码= 'ascii';我在ruby脚本中匹配了这些设置,但是每当我试图在这个文件中读取时,我会得到以下错误:
/usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/csv.rb:1894:in `block (2 levels) in shift': Missing or stray quote in line 1 (CSV::MalformedCSVError)
我在FasterCSV (1.5.0)中发现了一个CSV解析问题,这似乎是一个真正的bug,但我希望有一个解决方法。
基本上,当字段用引号括起来时,在分隔符(在我的例子中是逗号)后面添加一个空格将生成一个MalformedCSVError。
下面是一个简单的例子:
# No quotes on fields -- works fine
FasterCSV.parse_line("one,two,three")
=> ["one", "two", "three"]
# Quotes around fields with no
如果CSV文件的一行以空格(引号外)结尾,那么CSV有效吗?
例如:
require "csv"
csv1 = "\"foo\",\"bar\""
CSV.new(csv1).first
#=> ["foo", "bar"]
csv2 = "\"foo\",\"bar\" " # Note the extra space at the end of the line
CSV.new(csv2).first
#=> raises CSV:
在ruby/rails中导入这个CSV文件有问题
我得到的错误消息是:
Missing or stray quote in line 1 (CSV::MalformedCSVError)
但我不知道发生了什么因为我的CSV看起来很好。以下是样本数据:
"lesley_grades","lesley_id","last","first","active","site","cohort","section","sections_title","fa
传入的数据文件包含格式错误的CSV数据,如非转义引号,以及(有效) CSV数据,如包含新行的字段。如果检测到CSV格式错误,我想对该数据使用替代例程。
使用以下示例代码(为简单起见进行了简化)
FasterCSV.open( file ){|csv|
row = true
while row
begin
row = csv.shift
break unless row
# Do things with the good rows here...
rescue FasterCSV::MalformedCSVError => e
我有一个包含3000行的csv文件,我得到一个CSV::MalformedCSVError: Missing or stray quote in line 1427错误,但所有数据都用逗号很好地分隔。我找不到这行上的错误
"Anjou","(ANJ) Jean-Corbeil / Adultes - BD",2008-03-08 23:51:10,2,1,"Disponible","LV_Fiction A","","Philémon, l'arche du "A" /",&
下面是我的代码
task priceupdate: :environment do
csvtoopen = open('')
csv = CSV.parse(csvtoopen, :headers=>true, quote_char: "\x00")
csv.each do |row|
Stuff to do here
end
end
我有一个问题,下面是错误代码:
CSV::MalformedCSVError: Unquoted fields do not allow \r or \n (line 28010).
我有一个简单的CSV文件,它使用|(竖线)作为引号字符。在将我的rails应用程序从Ruby 1.9.2升级到1.9.3之后,我得到了一个"CSV::MalformedCSVError: Missing or my in line 1“错误。
如果我打开vim并将|替换为常规引号、单引号甚至"=",则文件工作正常,但|和*会导致错误。有谁知道这是什么原因造成的吗?下面是一个可以重现错误的简单一行代码:
@csv = CSV.read("public/sample_file.csv", {quote_char: '|', headers:
我想使用Ruby的CSV类来读取一个文件:
要读取的文件如下所示:
CM_ SG_ 1325 XXX_Address "XXX address";
CM_ SG_ 612 YYY_MsgCounter "incremented by 1 each time a
message has been transmitted";
我的红宝石密码:
#!/usr/bin/env ruby
require 'pp'
require 'csv'
CSV.foreach(ARGV[0],:col_sep=>" ") do
我正在用Ruby解析CSV文件,并且遇到了问题,因为分隔符是逗号,我的数据包含逗号。
在包含逗号的部分数据中,数据被"“包围,但我不知道如何使CSV忽略引号中包含的逗号。
示例CSV数据(File.csv)
NCB 14591 BLK 13 LOT W IRR," 84.07 FT OF 25, ALL OF 26,",TWENTY-THREE SAC HOLDING COR
示例代码:
require 'csv'
CSV.foreach("File.csv", encoding:'iso-8859-1:utf-8',
在我的流星应用程序中,我使用Jquery插件导入csv,files.This是示例代码。
var data = $.csv.toArray(res);
它对某些csv文件很好,我得到的数据是正确的。但是对于另一些人,这是错误显示在控制台中。
Exception in delivering result of invoking 'saveFile': Error: CSVDataError: Illegal Quote [Row:1][Col:4]
at http://localhost:3000/packages/jquery-csv.js?ea39e3690e981
当试图解析到数组、AR模型导入等时,有一个buggy的CSV文件似乎是一个常见的问题。除了每天在model和save as中打开之外,我还没有找到其他的解决方案(不够好!)
在外部提供的每天更新的60,000行csv文件中,有一个错误:CSV::MalformedCSVError: Illegal quoting in line 95. (举个例子)。我很高兴跳过/忘记错误的行(也就是说,它只有1/600000的重要性)。
第一次尝试是使用CSV.foreach或类似的方法,简单地使用begin rescue next end跳过错误。没有骰子。我希望这个被接受的答案是更详细的: (即“自己读
我从服务器接收到提取的数据,问题是提取有分隔符";“在csv文件中。
我使用以下命令读取该文件夹:
files = glob.glob(r"path/*.csv")
dfs = [pd.read_csv(f, sep=";", engine='c') for f in files]
df2 = pd.concat(dfs,ignore_index=True)
产出如下:
columnA columnB .... columnT columnU
2000 A .... I wish NaN
1000
CSV.open(name, "r").each do |row|
puts row
end
我得到了以下错误:
CSV::MalformedCSVError Unquoted fields do not allow \r or \n
文件的名称是.txt制表符分隔的文件。我特意做的。我有一个.csv文件,我去excel,并将文件保存为以.txt制表符分隔的文件。因此它是制表符分隔的。
CSV.open不应该能够读取制表符分隔的文件吗?
我尝试读取大型csv文件
但是csv的情况很糟糕
所以其中有一部分是抛出了CSV::MalformedCSVError
我只想忽略错误行,转到下一行
我试图添加begin rescue,但我的代码似乎不能工作,它在错误处停止
我当前的代码
require 'csv'
begin
CSV.foreach(filename, :headers => true) do |row|
Moulding.create!(row.to_hash)
end
rescue
next
end
当我试图使用以下代码导入一个文件时,我会得到一个CSV:MalFormedCSVError:
def import_csv(filename, model)
CSV.foreach(filename, :headers => true) do |row|
item = {}
row.to_hash.each_pair do |k,v|
item.merge!({k.downcase => v})
end
model.create!(item)
end
end
csv文件很大,所以有什么方