重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

テキストファイルには
A
B
C
A
D
のように一行ずつ語句が保存してあります。

よろしくお願いします。

A 回答 (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"]]
が入っています。

この回答への補足

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

補足日時:2011/12/21 08:34
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/21 09:46

「出現回数の多かった」とはどのように判断する予定ですか?


「表示したい」とは具体的にどのような結果が欲しいのですか?

そして書いたスクリプトを補足にどうぞ。

この回答への補足

説明が不十分で申し訳ありません。
出現回数の多かったものの判定についてですが、
テキストファイルを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つ配列に格納して比較する方法がわかりません。
よろしくお願いします。

補足日時:2011/12/20 12:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!