当其中一列包含双引号 " 字符时,我将如何解析 CSV 文件?我收到“第 xxx 行中缺少或杂散引号”错误,因为其中有一个尾随双引号。确切的错误是“缺少或第 58 行中的杂散引用 (CSV::MalformedCSVError)”。数据来自解析另一个设备(防火墙)配置的应用程序,并且“已由管理员作为注释添加到该设备的配置中,并且因此超出了我的控制范围。
输入数据示例(无法提供文件,它们本质上是敏感的):
"Table 1 Firewall Policy from INT to EXT administrative service rules on TestFirewall","1","Yes","Allow","[Group] GreenServer","[Host] Any","[Group] FTP","No",""Access"^M
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,最后一列中的注释是“”Access”。如果最后一列中只有双引号,我到目前为止的脚本似乎工作得很好。
复制所需的最少代码:
#!/usr/bin/env ruby
require 'csv'
require 'pp'
nipperfiles = Dir.glob(ARGV[0] + '/*.csv')
def allcsv(nipperfiles)
filearray = []
nipperfiles.each do |csv|
filearray << csv
end
filearray
end
def devicetype(filelist)
filelist.each do |f|
CSV.foreach(f, :headers => true, :force_quotes => true, :encoding => Encoding::UTF_8) do |row|
if row["Table"] =~ /audit device list/ && row["OS"] =~ …Run Code Online (Sandbox Code Playgroud)