ni_haruのブログ

ほぼ日記

Pythonで言語処理100本ノックを解く 03. 円周率

Python言語処理100本ノックを解いてみます。
4本目です。

環境

Ubuntu 16.04.3 LTS
Python 3.5.2

03. 円周率

"Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."という文を単語に分解し,各単語の(アルファベットの)文字数を先頭から出現順に並べたリストを作成せよ.

解答

# -*- coding: utf-8 -*-

if __name__ == "__main__":
    pi_str = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
    pi_list = [ len(p.replace(",", "").replace(".", "")) for p in pi_str.split()]
    print(pi_list)

解いた後に他の方の解答を調べて気付いたのですが、この解答だと文章に ? や " があると修正が必要になってしまいますね。
問題文に「アルファベットの文字数」とあるので、アルファベットのみカウントした方が良さそうです。

pi_list = [ len(re.findall('[a-zA-Z]', p)) for p in pi_str.split()]

正規表現でアルファベットのみ抜き出して、その文字数をカウントしてみました。