"hoge": 1, "hoge": 2, "hoge": 3,
となっているテキストファイルから
1,2,3
となっている形式で別のファイルに書き出したいです。
初歩的な質問で申し訳ありませんが、こちらご教授願えないでしょうか。。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
str = File.read("orignal.txt").gsub(/^.*?:/,"").gsub(/\n/,"")
File.write('converted.txt',str)
ちょっと短くできた
str = File.read("orignal.txt").gsub(/(^|\n)(.*?:)?/,"")
もし、最後に改行が有っても良い、若しくは有ったほうが良いのでしたら
str = File.read("orignal.txt").gsub(/(^|\n).*?:/,"")
頭と終わりか、、、ながくなっちまったな。汚い。も少し楽しんでみます
File.read("orignal.txt").gsub(/(^|\R).?:/,"").sub(/\s/,"").sub(/,\R/,"")
[1..-1] が汚い
File.read("orignal.txt").split(/[^\d]+/)[1..-1].join(", ")
投稿2019/10/10 13:06
編集2019/10/10 14:44総合スコア23567
0
ruby
1res = File.read('sample.txt').split("\n").map do |line| 2 line.split(':').last.chop.strip 3end 4 5File.write('out.txt', res.join(',')) 6
投稿2019/10/10 10:31
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/10 14:33
2019/10/10 14:36
退会済みユーザー
2019/10/10 14:48
2019/10/10 14:53 編集
0
ベストアンサー
txt
1
"hoge": 1,
"hoge": 2,
"hoge": 3,
をsample.txt
とすると以下のようなコードで
rb
1puts File.read('sample.txt').gsub(/[",,]/, '').split("\n") 2 .map{ |x| eval("{#{x}}").values }.join(',')
1,2,3
と出力できます。
File.read
でファイルの中身を取り出し、gsub
で不要な文字を消し、split
で分割して、eval
で無理やりHashの形にして、join
で結合して出力しています。
雑に書いたのでもっといい書き方があるかもしれませんが、これをputs
で出力するのではなく、新しくファイルに書き込むようにすれば目的は果たせると思います。
書き方については色々あります。
条件さえ満たせばいいのか、他に考慮すべきことがあるのか次第です。
他の方も回答を考えてくださっているので、要件に一番合いそうなものを参考にすれば良いと思います。
投稿2019/10/10 09:45
編集2019/10/10 14:42総合スコア2349
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/10 14:16