2016-07-26 10 views
1

私はpandas pythonライブラリのread_csv関数を使ってnginxアクセスログを解析したいと思います。列としてもカッコまたは角カッコ内の要素を処理するために、複数のquotecharを指定することも可能であろうパンダの複数引用符

pd.read_csv('lb-access_cache.log', delim_whitespace=True, quotechar='"') 

:私は、次のコードを使用していますか?

たとえば、次のような文字列では3つの列を取得します。これがどうなる

こんにちは「世界ハロー」[世界は美しいです]

答えて

3

は、あなたは9月の代わりに正規表現を使用する必要があります。

df = pd.read_csv(log_file, 
       sep=r'\s(?=(?:[^"]*"[^"]*")*[^"]*$)(?![^\[]*\])', 
       engine='python', 
       usecols=[0, 3, 4, 5, 6, 7, 8], 
       names=['ip', 'time', 'request', 'status', 'size', 'referer', 'user_agent'], 
       na_values='-', 
       header=None 
       ) 
+0

一部の人々が私に]のある請願を行っていますURL、大括弧の中のデータの貪欲な検索は、正規表現を壊すでしょう。私は貪欲な先読みを取り除かずに修正することができませんでした。例として、誰かがGET/test] HTTPを要求した場合、時刻は "DATE" \ "GET/test"として選択されます。 –

+0

出力をポストできますか? – SerialDev