Rubyを使った列同士の結合について教えてください。
現在
ID 大英字 小英字 平仮名 片仮名 大ギリシア 小ギリシア
1 A a あ ア Α α
2 B b い イ Β β
3 C c う ウ Δ ⊿
4 D d え エ Γ γ
5 E e お オ Ε ε
以下続く。
となっているスペース区切りのデータがあります。
それを
ID,大英字, ID,小英字, ID,平仮名, ID,片仮名, ID,大ギリシア, ID,小ギリシア,
1,A, 1,a, 1,あ, 1,ア, 1,Α, 1,α,
2,B, 2,b, 2,い, 2,イ, 2,Β, 2,β,
3,C, 3,c, 3,う, 3,ウ, 3,Δ, 3,⊿,
4,D, 4,d, 4,え, 4,エ, 4,Γ, 4,γ,
5,E, 5,e, 5,お, 5,オ, 5,Ε, 5,ε,
以下続く。
のように、出力したいです。
エクセルでやろうと思ったのですが、
データ数が多くエクセルがハングアップして強制終了に陥いってしまい、一向に作業が進まなく困っております。
どのような形にしたいかを言葉にすると、以下のように
一列目,二列目, 一列目,三列目, 一列目,四列目, まだ続く
のように、"一列目""カンマ""二列目""カンマ""スペース""一列目""カンマ""三列目""カンマ""スペース"
というようになってほしいという事です。
つまりID,大英字,が一列目の先頭 ID,小英字,が二列目の先頭
であります。
エクセル上に展開してからならばVBAも動かせたのですが、エクセル上に展開する前段階でハングアップとなってしまうため、VBAに頼れなくなっております。展開せずに流動処理もできるという話は聞いたことがあるのですが、恥ずかしながらこれを知りません。
なぜRubyかというと、研究計算プログラムがRubyをエンジンとしているためRubyなら大容量計算ができているため動いてくれると思っているからです。(なお、プログラムのインストールは禁止されているため他の言語は使えません。)
Rubyは2.1が搭載されております。
よろしくお願いします。お知恵をお貸しください。
No.1ベストアンサー
- 回答日時:
以下でどうでしょうか
※段付け表示の為、行頭に全角スペースを付加しているので削除してください。
※質問欄ご提示の入力データはタブ区切りでしたので、そう対応しましたが
もしスペース区切りの場合は、プログラム中のコメントの場所を修正してください。
※使用文字コード(プログラム、データ共)は適切に指定してください。
File.open("output.txt","w") do |fo|
File.foreach("input.txt") do |line|
line.chomp!
ary = line.split("\t") # ←ここ
fo.puts ary[1 .. ary.size-1].map{|e| ary[0]+","+e+","}.join(" ")
end
end
ありがとうございます。
スペース区切りであったため、当該箇所を" "に書き換えて使用させていただいております。
作業が高速化でき、非常に助かっております。
今後のために、少しお聞きしたいです。
|fo|というのは書きこむために作成するファイルを指しているのでしょうか?
fo.puts ary[1 .. ary.size-1].map{|e| ary[0]+","+e+","}.join(" ")
の部分でary.size-1としているのはrubyは1列目をゼロとカウントするからでしょうか?
その後ろの|e|ですが、これは列をいったん格納する変数という感じなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
1、Rstudioで回帰直線を求める...
-
pandasでsqlite3にテーブル作成...
-
PysimpleGUIでデータベースを作る
-
Accessで文字列のバイト数読み込み
-
電子書籍作成、epubファイルの...
-
パソコンのスクリーンセーバー...
-
教えてください
-
英数字を含む文字列(0-9,A-Z)...
-
MacBookAir起動時にRubyソース...
-
A4 持ち込み
-
前回の質問の続き
-
あせんうぶり言語
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
-
pythonのerrorコード
-
三項でたとえば交換って
-
WinSCPで画像のように puttyを...
-
こういう問題分をよんだとき
-
バーチャルボックスが使えなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
九九の表示
-
[中級]携帯メールで絵文字付き...
-
小文字wと大文字Wの区別
-
COBOLのIFの入れ子について
-
VB.NETで階乗を求めるプログラ...
-
RubyでNo such file or directo...
-
Ruby / passenger のインストー...
-
web上のhtmlファイルから文字デ...
-
プログラミング言語で大文字と...
-
「大文字・小文字・スペース」...
-
バーコードのチェックデジット...
-
システムエンジニアの適正について
-
アプレットで三次方程式1
-
Ruby interpreter (CUI) 2.2.3 ...
-
フォルダー名の大文字小文字
-
RubyGems の「GEM」は何の略で...
-
VBとフィボナッチに明るい方、...
-
ruby の Σ計算
-
GoTo文について
-
CかC++どちらを覚えるべきですか?
おすすめ情報
投稿したら分かりにくくなったので補足いたします。
1,A, 1,a, 1,あ,の間にあるカンマは区切り文字ではありません。
1,A,「スペース」1,a,「スペース」1,あ,
であります。
よって欲しいファイル形式は
スペース区切りのテキストファイル(エクセル出力風でいうと、スペース区切りテキスト(.prn)ファイルであります。