【 Python + Regular Expressions 】複数のマッチパターンを look ahead (先読み) シンタックスを利用して 1 つのマッチパターンにまとめて処理しよう! re.match() の呼び出しも 1 回で済んじゃいます!

Tags: python , regular expressions , lookahead

Published 2020年9月11日20:20 by T.Tsuyoshi

時には、テキストが複数の条件に合致しているか、を調べる必要に迫られることもあります。 ユーザーが設定しようとしているパスワードが十分に「安全」かを確認したいような場合もそうですね。 ここでは「十分に安全」なパスワード ( strong passowrd ) の条件を以下のように定めるとします。。 1: 8 文字以上で、アルファベット、数字、句読文字 ( punctu…

【 Python + Regular Expressions 】正規表現の 先読み ( look ahead; ?=expression ) 機能を使いこなそう!

Tags: python , regular expressions , lookahead

Published 2020年9月10日21:37 by T.Tsuyoshi

例えばファイルから読み込んだテキストに含まれるセンテンスの数を数える場合、'.'、'?'、'!' いずれかのリテラル文字で終わる場所を 1 つのセンテンスの最後と判断し、non-greedy にマッチさせるパターンを作成、findall() から返ってきたマッチリストの長さを取得します。 マッチオブジェクトを作成する際に findall() に指定している DOTALL フラグは、'.…

【 Effective Python, 2nd Edition 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第 5 回 - 並列処理 ( concurrency ) のためにスレッド ( thread ) を利用する場合は concurrent.futures モジュールの ThreadPoolExecutor の導入を検討しましょう、の巻

Tags: python , concurrency , parallelism , conway's game of life , threadpoolexecutor , effective

Published 2020年9月8日10:29 by T.Tsuyoshi

さて、えっちらおっちらとやってきまして、このシリーズも第 5 回になっております。 取り敢えず整理も兼ねまして、過去 4 回のポストへのリンクをまとめておきます。 このシリーズで並列処理 ( concurrency ) ならびに並行実行 ( parallelism ) への検討を重ねている Conway's Game of Life の大元のコードは第 1 回と第 2 回で作…

【 Effective Python, 2nd Edition 】プログラムを並列処理 ( concurrency ) パターンへ移行するタイミングとツールを考えるシリーズ 第 4 回 - 並列処理 ( concurrency ) 実現のために queue を利用するとリファクタリング ( refactoring ) 作業が大変です、の巻

Tags: refactoring , python , concurrency , queue , fan-out , fan-in , effective

Published 2020年9月6日9:46 by T.Tsuyoshi

シリーズ第 3 回の記事 の検証で、コンスタントに fan-out / fan-in を繰り返す場合にはスレッド ( thread ) だけでの構築は不向き、ということが分かりました。 それにも懲りず今回も Conway's Game of Life サンプルを利用して、ブロッキング I/O の並行実行 ( parallelism ) 実装に向けた最適ツールの探求を続けていきたいと思い…

【Python 雑談・雑学 + coding challenge】itertools モジュールの combinations() メソッドを自分で実装してみよう!

Tags: challenge , python , itertools , combinations

Published 2020年9月1日17:01 by T.Tsuyoshi

さて、itertools モジュールの combinations() メソッドを使ったことがありますか? シーケンス要素の「組み合わせ」を返してくれます。 from itertools import combinations nums = [0, 1, 2, 3] print(list(combinations(nums, 2))) # [(0, 1…