- ベストアンサー
プログラムのヒントを下さい
- 初心者の方が統計ソフトRの処理において問題に直面しています。ファイルの特定の文字列を抽出するスクリプトを作成する必要がありますが、進めることができません。助けていただける方がいらっしゃいましたら、ご教授いただけないでしょうか。
- C言語は学習済みですが、perlにはまだ慣れていない方がいます。統計ソフトRの処理のためのスクリプトを作成しようとしていますが、問題が発生しています。ファイルから特定の文字列を抽出し、繰り返しの形式で出力するスクリプトを作成する方法をご教示いただけませんか。
- 初心者の方がperlのスクリプト作成について困っています。統計ソフトRの処理のためのスクリプトを作成する予定ですが、うまく進められません。ファイルから特定の文字列を抽出し、指定の形式で出力するスクリプトの作成方法をご教授いただけませんか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> とそれぞれの()の最後の文字deuch beer zeroに,が残ってしまっています。これを消すにはどうしたらいいでしょうか? じゃあ、思いっきり手を抜くとこんな感じかな・・・。 open(IN, "datafile.txt"); @xx = <IN>; close(IN); my $yy = join("\",\"",@xx); $yy =~ s/\r\n|\r|\n//g; $yy =~ s/,\"END\",/),c(/g; print "c(\"".$yy."\")"; exit; でも本気でちゃんとプログラミングの処理として動作させたいなら自分がPCになったつもりで手順を考えたほうがためになると思う。
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
「C を勉強した」というなら, 「C ではどう書くか」を考えてそれを perl に変換してもいいような気はするが, それはさておき. そのプログラムがどのような動作をするのか, 説明できますか? そして, 何が足りないのか認識できていますか?
お礼
回答ありがとうございます。プログラム自体は、見れば何をやっているかはわかりますが、自分で思いつくのは難しいです。上手な人のコードをたくさんみて参考にしたいです。
- ralf124c
- ベストアンサー率52% (232/446)
たびたびすいません。 ヒントという質問だったのに全部書いて申し訳ありません。 先のリストには「END」が最終行にきた場合「...),c()」となってしまいますがそれでもいいのでしょうか? それとも、こういうの「,c()」は無し?
お礼
回答ありがとうございます。自分では思いつかなかったのでむしろ助かりました。 ENDが最後にくると、目視で削除します。 取り除けたらなおよいのですが。
- ralf124c
- ベストアンサー率52% (232/446)
これでどうですか? open(IN, "datafile.txt"); @xx = <IN>; close(IN); ##ファイルを開いている時間はできるだけ短く print "c("; foreach $yy (@xx) { $yy =~ s/\r\n|\r|\n//g; if($yy ne "END"){ print "\"$yy\","; }else{ print "),c("; } } print ")";
お礼
早い回答本当にありがとうございます。とても助かりました。 ほとんど完璧に近いのですが、 c("apple","best,"chine","dutch",),c("apple","beer",),c("child","death" ,"zero",) とそれぞれの()の最後の文字deuch beer zeroに,が残ってしまっています。これを消すにはどうしたらいいでしょうか?
お礼
回答ありがとうございます。実際にスクリプトを試してみたのですが、 END apple beer apple END のようにend間に同一の単語が出現しているとエラーが起きてしまいました。 回答のプログラムはちょっとスキルが自分には高すぎて修正ができません。 なんども、お手数をかけてしまい、大変心苦しくおもうのですが、 end間に同一の単語がでた場合取り除くコードを教えてもらえませんか? なにとぞよろしくお願い申し上げます。
補足
質問が重複してしまったので改めて別のトピックとさせていただきます。回答ありがとうございました。