2011年01月07日

csvファイルのフォーマットを変換する2(Ruby)

前記事では、データにコンマが入っているcsvファイルには対応していないので別バージョンを作りました。



# encoding:utf-8
require "csv"

def make99(n=9,filename="99.csv") #九九のファイルを作る。
foo = File.open(filename,'w')

for i in 1..n
foo.print "A,B,"
for j in 1..9
foo.print i*j
foo.print ","
end
foo.puts " \n"
end

foo.close
end

def edit_csv2(namer,namew)


writer=CSV.open(namew,'w')

CSV.open(namer,'r') do |txt|
txtAryr =txt.to_a
txtAryw = txt.to_a#書き込み用に同じものを作っておく

#ここにやりたい処理を書く 以下は例
txtAryw[4],txtAryw[3]=txtAryr[3],txtAryr[4]#順番交代
txtAryw[1,2]=[]#削除
txtAryw[4,2]=["A,B","C"]#挿入
##################################

writer<<txtAryw #書き出し

end
writer.close

end

make99()
edit_csv2("99.csv","99_2.csv")


posted by hougi at 02:53| Comment(15) | 日記 | このブログの読者になる | 更新情報をチェックする

2011年01月06日

csv tsvファイルのフォーマットを変換する(Ruby)

Rubyの練習にcsv tsvのファイルフォーマット変換器を作ってみました。
csvのデータの中にコンマが入っている場合は対応していません。
列の入れ替えや、列の挿入、列の削除などの作業が簡単にできます。
こういう簡単な作業にいちいちエクセルを開くと非効率ですしね。
例では九九表を作りそれをいろいろいじっています。



# encoding:utf-8

def edit_csv(namer,namew,spr="\t",spw="\t")
#読み込みファイル名 書き込みファイル名 読み込み用区切り文字 書き込み用区切り文字
fh = open(namer,"r")
fw= open(namew,"w")
while !fh.eof
txt = fh.gets.chomp! #一行読む 改行記号を削る。
txtAryr = txt.split(spw) #読み込み用区切り文字
txtAryw = txt.split(spw) #書き込み用に同じものを作っておく

#ここにやりたい処理を書く 以下は例#############
txtAryw[4],txtAryw[3]=txtAryr[3],txtAryr[4]#順番交代
txtAryw[2,1]=[]#削除
txtAryw[4,2]=["A","B"]#挿入
###############################################


txtAryw.each do |word|
fw.print word
fw.print spr #書き込み用区切り文字
end

fw.print "\n"

end
fh.close
end

def make99(n=9,filename="99.tsv") #九九のファイルを作る。
foo = File.open(filename,'w')

for i in 1..n
for j in 1..9
foo.print i*j
foo.print "\t"
end
foo.puts "\n"
end

foo.close
end


make99()
edit_csv("99.tsv","99_mod.tsv")


posted by hougi at 12:11| Comment(20) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。