• ベストアンサー

テキストファイルを読み込んでランキング付けする方法

タイトルのとおりですが、サーバーに保存してあるテキストファイルを読み込んで、 出現回数の多かったものを表示したいと考えています。 言語はRubyかできればJava scriptでと考えています。 テキストファイルには A B C A D のように一行ずつ語句が保存してあります。 よろしくお願いします。

  • Ruby
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

ファイルが able word length word length word のように1行1語なら lines=IO.readlines("***.txt") # 全行を読み込み配列に words=lines.collect{|line| line.chomp} # 改行を取り除く word_groups=words.group_by{|word| word} # 単語ごとにHashに sorted_words=word_groups.sort_by{|word, word_array| -word_array.size} # 出現頻度の高い方かならべる のような感じです。 sorted_words[0]には["word", ["word", "word", "word"]] が入っています。

yosi583
質問者

お礼

理想通り出現頻度の多い順に出力できました。 この度はありがとうございました。

yosi583
質問者

補足

回答有難う御座います。 やってみます。

その他の回答 (1)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

「出現回数の多かった」とはどのように判断する予定ですか? 「表示したい」とは具体的にどのような結果が欲しいのですか? そして書いたスクリプトを補足にどうぞ。

yosi583
質問者

補足

説明が不十分で申し訳ありません。 出現回数の多かったものの判定についてですが、 テキストファイルを1行ずつ読み込んでいき1つずつ配列に格納して、 比較して同じであればカウントをする方法を取りたいと思います。 表示の方法に関しては例えばカウンタのようにメインページ上に表示したいと考えています。 以下スクリプトです。 わからないことだらけなのでやりたいことはコメントで書いてみました。 #!/usr/bin/ruby -Ke print "Content-Type: text/html\n\n" require "cgi" #ライブラリ読み込み cgi = CGI.new fp = File::open("******.txt", "r") #テキストファイル読み込み line_count = fp.read.count("\n") #行数をカウント set = fp.Readline     #1行ずつ読み込む fp.close while i > line_count #行数分繰り返す #****ここで比較をしたい。**** end print " <html><head></head><body>" print #{******},"\n" #表示 print "</body></html>" 1つ1つ配列に格納して比較する方法がわかりません。 よろしくお願いします。

関連するQ&A

  • テキストファイルについて

     ご教授お願い致します。  あるレコードを自動でテキストファイルへ書きこむ作業がありまして  テキストファイルの保存先名の指定はできるのですが  タイトルをテキスト行の一行目につけたいとの要望がありました。  そのレコードのみの書き込みのため一行目に何の題名かが  自動で表示できればいいとの要望でした。  よって、保存先名を指定の場所でファイル名を作成すると同時に  一行目に指定した題名をつけることが可能でしょうか?  ぜひ、ご回答お願い致します。  

  • テキストファイルを配列に

    始めまして C言語にてテキストファイルの中身を読み込み一次元配列に代入するというシステムを作ろうとしているのですがわかりません テキストファイルの中身は 12 5312 72 7 444 53 7884 といった具合で100数行あり一行ごとに配列に入れたいです 勉強を始めたばっかりで本を見ても書いていなく困っています わかるかたご指導願えますか? よろしくお願いいたします

  • バッチファイルでテキストファイルを修正

    あるテキストファイルに A=1 B=2 C=3 D=4 と書かれているのを、例えば、D=5に変更できる バッチファイルは作成可能でしょうか。宜しくお願い致します。 (テキストファイルのオープン→Dを検索→5に修正→テキストファイルを上書き保存)

  • ファイルの追加

    テキストファイルがいくつかあって、 コンソールからそれをひとつのテキストファイルに まとめるという事はできますか? JavaやC言語でつくろうと思えば作れるのですが、 例えば a.txt b.txt c.txt d.txt というのがあってa.txtにそれ以外のファイルの内容 を追加したいと思っています。 お願いします。

  • C言語のテキストファイルの読込み

    必要に迫られてC言語でテキストファイルの読込みを行う プログラムを作成しなければならなくなりました。 whileとfscanfを用いて書式を指定して一行ずつ読込むことができる ということは知っていますが、その際、たとえば読み込むファイルが 20行のテキストファイルだったとして、10行目から読込みを 行いたい場合はどのようにプログラムを書けばいいのでしょうか? なにぶんC言語初心者ですのでよろしくお願いします。

  • テキストファイルを音声ファイルに変換する方法

    はじめまして。 標記の内容についてなにかご存知な方はいらっしゃいませんでしょうか? 現在Javaにて、テキストファイルを音声ファイルに変換する技術が必要となっております。 また、プログラムにより電話を鳴らし、生成した音声ファイルを再生する方法についても調査中です。 もし、このような技術をご存知の方がいらっしゃいましたら、ご教授願います。 なお、Javaに限らずその他の言語でもかまいません。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • C++で、テキストファイルを一行ずつ読み込んで配列に入れたいのですが、

    C++で、テキストファイルを一行ずつ読み込んで配列に入れたいのですが、うまくできません! テキストには -3.0        1.0        2.0 ・・・などのように一行に一つの数値が入って縦に並んでいます。 それをひとつずつ読み込み、新しい配列(たとえばa[])に順番にいれたいのです。 a[1]=-3.0,a[2]=1.0、・・・と なるように。 どうか、この初心者にご指導お願いいたします。

  • ファイルの受け渡し方法教えてください。

    JAVAでこんな処理をしたいのですが、プログラムの書き方を教えて頂けませんでしょうか? (1)サーバーにあるXMLファイルを受け取る。 (2)受け取ったXMLファイルを上書き保存する。 (3)そのXMLファイルを送り返す。 ポイントはXMLファイルなんですが、やり方が見当つきません。ご教授願います。 もし、これがテキストファイルだったら簡単にできるのでしょうか?両方、やり方がわかれば教えてください。

    • ベストアンサー
    • Java
  • テキストファイルを読み込んでソートするプログラム

    英文のテキストファイルを読み込んで、単語を一行に一単語ずつ並べた後、それをアルファベット順にソートして、同じ単語を消去したテキストファイルを作るプログラミングを作りたいと思っています。 しかしテキストファイルを読み込むという命令がよくわかりません。 isalpha()などを使ってプログラム内に打ち込んだ英文を単語ごとに分けるプログラムは出来たのですが、テキストファイル(.txt)はどうやって読み込めばいいんでしょうか? プログラムはGNOMEのXEmacsで作っていて、C言語です。

  • ファイル操作について、テキストファイルの書き換え

    よろしくお願いします。 データファイルAからデータを取得して、テキストファイルBの内容の一部を取得したデータで書き換えるという操作を行うプログラムを作りたいです。 具体的には、 データファイルA[A.txt]の中身 111 222 333 444 テキストファイルB[B.txt] 文字列1="123" 文字列2="234" 文字列3="345" 文字列4="456" というような二つのファイルを読み込み、B.txtの""で囲まれた部分を、A.txtで取得したデータで置き換えるような操作を行いたいのですが・・。 使用する言語としてはスクリプト言語であるperl、もしくはプログラム作成経験があるCを使用しようと思っています。(perlは未経験で入門書を読んでいるレベル)

    • ベストアンサー
    • Perl

専門家に質問してみよう