各タプルは、正規表現と文字列
[(r'\d\d?/\d\d?/\d\d\d\d', '00/00/0000'), ...]
を有している場合我々は難読化re.sub
を使用して、連続置換を行います。このうち発電機のパイプラインを構築することができ、あなたはタプルのリストを持っているとしましょう日付、時刻、電子メールアドレスのようなものの違いなど最後for
ループでは
import re
def replace(pat, repl, iterable):
pat = re.compile(pat)
for string in iterable:
yield pat.sub(repl, string)
def reader(filelist):
for name in filelist:
with open(name) as f:
yield f.read()
filelist = ['filename1.txt', 'filename2.txt', ...]
patterns = [(r'\d\d?/\d\d?/\d\d\d\d', '00/00/0000'), ...]
source = reader(filelist)
gen = source
for pat, repl in patterns:
gen = replace(pat, repl, gen)
for string in gen:
print(string)
、gen
は、ファイルのサニタイズ内容を生成するジェネレータです。ここではそれらを印刷しますが、ファイルに書き戻したり、保存したり、一度に1つずつ分析したり、反復的にdiff
を実行したりすることができます。
あなたがそれらを識別できると仮定して、日付と電子メールアドレスのようなものを匿名化することができます。 're.sub'を使ってファイルを何度か調べると、すべての日付を' 00/00/0000'に置き換えて、他のデータでも同じようにすることができます。私は、文字列を消費し、その文字列の匿名化バージョンを生成するジェネレータパイプラインのように設定します。 –
@PatrickHaughこれは、difflibをラップするのが難しくなっても、簡単な方法です。代わりに関数に辞書を渡すことができます: '{'PLACEHOLDER':regexp}'ここで、日付の場合、正規表現のリストを持つことができます。 – arewm