2016-07-26 2 views
1

Я хочу проанализировать журнал доступа nginx, используя pandas python library read_csv. Я использую следующий код:Несколько катчаров в pandas

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

можно было бы указать более одного QuoteChar, чтобы рассматривать также элементы внутри скобок или квадратные скобки в качестве столбцов?

Например, в строке, подобной следующей, я хочу получить 3 столбца.

привет «мир привет» [мир прекрасной]

ответ

3

Это будет делать, вам нужно использовать регулярное выражение вместо СЭП:

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

Смежные вопросы