String to sequence

Tim Chase python.list at tim.thechases.com
Sat Mar 14 21:30:29 CET 2009


> How can I convert the following string:
> 
> 'AAR','ABZ','AGA','AHO','ALC','LEI','AOC', 
> EGC','SXF','BZR','BIQ','BLL','BHX','BLQ'
> 
> into this sequence:
> 
> ['AAR','ABZ','AGA','AHO','ALC','LEI','AOC', 
> EGC','SXF','BZR','BIQ','BLL','BHX','BLQ']

Though several other options have come through:

  >>> s = "'EGC','SXF','BZR','BIQ','BLL','BHX','BLQ'"
  >>> import re
  >>> r = re.compile("'([^']*)',?")
  >>> r.findall(s)
  ['EGC', 'SXF', 'BZR', 'BIQ', 'BLL', 'BHX', 'BLQ']

If you want to get really fancy, you can use the built-in csv parser:

  >>> import cStringIO
  >>> st = cStringIO.StringIO(s)
  >>> import csv
  >>> class SingleQuoteDialect(csv.Dialect):
  ...     quotechar = "'"
  ...     quoting = csv.QUOTE_MINIMAL
  ...     delimiter = ","
  ...     doublequote = True
  ...     escapechar = "\\"
  ...     lineterminator = '\r\n'
  ...     skipinitialspace = True
  ...
  >>> r = csv.reader(st, dialect=SingleQuoteDialect)
  >>> r.next()
  ['EGC', 'SXF', 'BZR', 'BIQ', 'BLL', 'BHX', 'BLQ']


This gives you control over how any craziness gets handled, 
prescribing escaping, and allowing you to stream in the data from 
a file if you need.  However, if they're airport codes, I suspect 
the easy route of just using a regex will more than suffice.

-tkc










More information about the Python-list mailing list