get quote enclosed field in a line

John Machin sjmachin at lexicon.net
Thu Apr 17 19:50:18 EDT 2008


xahlee at gmail.com wrote:
> is there a simple way in perl, python, or awk/shell/pipe, that gets
> the user agent field in a apache log?
> 
> e.g. the typical line is like this:
> 
> 189.139.109.235 - - [07/Apr/2008:00:00:16 -0400] "GET /
> Periodic_dosage_dir/lacru/manara.html HTTP/1.1" 200 1933 xahlee.org
> "http://xahlee.org/Periodic_dosage_dir/lacru/manara2.html" "Mozilla/
> 5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.13) Gecko/20080311
> Firefox/2.0.0.13" "-"
> 
> I want the part: "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:
> 1.8.1.13) Gecko/20080311 Firefox/2.0.0.13".
> 

C:\junk>type xah.py
import cStringIO, csv, pprint
line = '''189.139.109.235 - etc etc etc'''
f = cStringIO.StringIO(line)
reader = csv.reader(f, delimiter=" ")
row = reader.next()
pprint.pprint(row)

C:\junk>xah.py
['189.139.109.235',
  '-',
  '-',
  '[07/Apr/2008:00:00:16',
  '-0400]',
  'GET / Periodic_dosage_dir/lacru/manara.html HTTP/1.1',
  '200',
  '1933',
  'xahlee.org',
  'http://xahlee.org/Periodic_dosage_dir/lacru/manara2.html',
  'Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.13) 
Gecko/20080311 Fi
refox/2.0.0.13',
  '-']

If you don't like that, just hang about -- there's sure to be a 
pyparsing bus coming by real soon now :-)

Cheers,
John



More information about the Python-list mailing list