【python】英数字・記号を含むテキストから出現頻度の高いものを出力する
すっかりゲームブログ化してしまったので、
たまにはプログラミングのことでも・・・w
上司のススメで、CheckiOに挑戦中です。
pythonとjavascriptがあり、問題も結構多そうなので、勉強になりそう。
最近pythonを勉強しているので、そちらにチャレンジ。
ピンポイントすぎるミッション
かなりピンポイントなミッションでした。
が、もしかしたらいつか必要な時がくるのかなぁと思いながら、
私にはやるっていう選択肢しかありませんでしたw
python勉強してるってもDjangoにちょっと触れたくらいなので、
めちゃめちゃ調べながらやりました。
re(正規表現を除外する的なやつ)と、
collectionsのCounterってのが良さそうでしたので、これを採用。
import re
from collections import Counter
def checkio(text):
# 記号を除く
re_text = re.sub(re.compile("[!-\/:-@[-`{-~*+0123456789]"), '', text)
# sortさせる
string = sorted(re_text.replace(" ", "").lower())
counter = Counter(string)
one = counter.most_common(1)
# most_commonで一番多い文字列をピックしてからforでまわす
for key, value in one:
return key
以上です。
なんかすごい冗長な気がしてなりませんが、とりあえずこれでミッション達成しました。
実際、リストの中から一番多い文字列を取り出す時とかってのには使えそう。
正規表現はわけわからないので、苦手・・・。
CheckiO
https://checkio.org
参考にさせていただいたブログ。
Python Tips:文字列の中の文字をカウントしたい
Pythonらしいコードの書き方
Pythonで単語の数え上げとかするならCounterを使うと便利なはなし
Pythonで半角記号の括弧を削除
リンクはやめてくれって場合は、連絡いただければ削除させていただきます。
大変勉強になりました。