【发布时间】:2014-10-16 10:33:12
【问题描述】:
#!/usr/bin/env ruby
require 'rubygems'
require 'json'
require 'csv'
def is_int(str)
return !!(str =~ /^[-+]?[1-9]([0-9]*)?$/)
end
lines = CSV.open(ARGV[0],{:col_sep => "\|"}).readlines
keys = lines.delete lines.first
File.open(ARGV[1], "w") do |f|
data = lines.map do |values|
is_int(values) ? values.to_i : values.to_s
Hash[keys.zip(values)]
end
f.puts JSON.pretty_generate(data)
end
我有这个 Ruby 脚本,用于解析 csv 文件并以 JSON 格式打印第二个文件。
我对 Ruby 不太擅长,但我想为
修改它
- 读取 csv 文件
- 对于任何行(除了第一个是标题)
- 创建一个 file.json,其中文件的名称是该行的第二个字段
例如:
csv 文件:
ID|NAME|SURNAME|TELEPHONE
01|Jhon|Smith|123456
02|Steve|Brown|654321
文件 jhon.json 的输出:
[
{
"ID": "01",
"NAME": "Jhon",
"SURNAME": "Smith",
"TELEPHONE": "123456",
},
]
有人可以帮我吗?
【问题讨论】:
-
这是了解 CSV reading and parsing 的良好起点。
-
CSV 库内置了converters。