Python

トップ > レビュー > Python

テキストのパース

以下のような形式で「機能名、日時、所要時間」が記録されたログファイルをパースして、機能毎に時系列で所要時間をCSV形式に出力するスクリプトです。リストとディクショナリ(Javaで言うところのMap)がコアなデータタイプとして組み込まれていて便利です。

入力ファイル:

func1 end at 2011.04.13 01:23 [12s] ===
func2 end at 2011.04.13 01:23 [34s] ===
func1 end at 2011.04.14 01:23 [50s] ===

出力:

,2011.04.12,2011.04.13
func1,12s,50s
func2,,34s

report.py:

cols = [""]
rows = []
data = {}

f = open("report1.txt","r")
for line in f:
s = line.split()
func = s[0]
date = s[3]
elapsed = line[line.index("[")+1:line.index("]")]
if not date in cols:
cols.append(date)
if not func in data:
rows.append(func)
data[func] = [func]
diff = len(cols) - len(data[func])
if diff > 0:
data[func].extend([""] * diff)
data[func][cols.index(date)] = elapsed

print ",".join(cols)
for f in rows:
print ",".join(data[f])