テキスト ファイル (正確には csv) を解析するスクリプトを作成しており、各行の内容に基づいてファイルから行を選択したいと考えています。チェックする文字列の条件がいくつかあるので、regexp を使用するのがよいと推測しましたが、モジュロ演算の条件に対して行頭の数値をチェックする必要もあります。これまでのところ、n%4==k
andn%2==k
です。ただし、アドホックなソリューションしかないようです。n%2==k
非常に簡単ですが、確認するn%4==2
には、次のようなものを考案する必要がありました。
r'((^\d*[24680]|^)[26]|^\d*[13579][048])[\s;,].*' # more (unrelated) conditions follow
私の質問は次のとおりです。
- 上記の正規表現を単純化する方法はありますか? それに明らかな問題はありますか?
- スクリプトを他のモジュロ条件 (
n%3==k
または などn%7==k
) に一般化する場合、regexp を使用してそれを行う実行可能な方法はありますか、または文字列から数値を抽出し、そのような条件をチェックする追加のコードを記述したほうがよいでしょう。