萬九郎の硬い船

プログラミング学習記録など

『退屈なことはPythonにやらせよう』7章 演習プロジェクト

7章の演習プロジェクトは、正規表現を使った2つで、まずは「強いパスワードの検出」。

これは、最初にパスワードの強さテストを1項目ずつやっていく上のプログラムを書いた後でなんかこれだとダサいなと思い、少し調べた上で正規表現の「先読みアサーション」を使って下のプログラムに書き直した。「8文字以上かどうか」以外のテストをひとつにまとめたのだが、正規表現の書き方によっては全部1つのパターンで書けそうだ(現時点では知識およびスキル不足)。 課題では指示がないが、禁止文字までカバーできていないのが不満が残るところではある。

次に、「正規表現を用いたstrip()メソッド」。第1引数のテキスト文頭・文末にある空白文字を取り除き、第2引数がある場合は文頭・文末にあるその文字を取り除く。

これに関してはちょっと色々あった。まず、「*」のつく可変長引数はタプルになるため、中に入っている指定文字を取り出すために

character[0]

としてやる必要があり、さらにそれを正規表現に反映させるために

re.compile(r'^%s*' % character[0])

として正規表現内の%sを指定文字で置き換えている。 ちなみに、文頭パターンと文末パターンを別々に指定して別々に取り除いているが、これももっとスマートなやり方が全然ありそう。もうちょっと正規表現のgroupを活用できるようになった方がいい気がする。 勉強あるのみ。