#!/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
我有用于解析csv文件并以JSON格式打印第二个文件的Ruby脚本。用于将CSV转换为JSON的Ruby脚本
林用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 [阅读和解析](http://www.sitepoint.com/guide-ruby-csv-library-part)的好起点。 – 2014-10-16 10:43:26
CSV库具有内置的[转换器](http://ruby-doc.org/stdlib-2.1.3/libdoc/csv/rdoc/CSV.html#Converters)。 – Stefan 2014-10-16 11:29:47