[Tutor] using re to build dictionary

Kent Johnson kent37 at tds.net
Tue Feb 24 13:41:11 CET 2009


On Tue, Feb 24, 2009 at 6:48 AM, Norman Khine <norman at khine.net> wrote:
> Hello,
> From my previous post on create dictionary from csv, i have broken the
> problem further and wanted the lists feedback if it could be done better:
>
>>>> s = 'Association of British Travel Agents (ABTA) No. 56542\nAir Travel
>>>> Organisation Licence (ATOL)\nAppointed Agents of IATA (IATA)\nIncentive
>>>> Travel & Meet. Association (ITMA)'
>>>> licences = re.split("\n+", s)
>>>> licence_list = [re.split("\((\w+)\)", licence) for licence in licences]

This is awkward. You can match directly on what you want:

In [7]: import re

In [8]: s = 'Association of British Travel Agents (ABTA) No.
56542\nAir Travel Organisation Licence (ATOL)\nAppointed Agents of
IATA (IATA)\nIncentive Travel & Meet. Association (ITMA)'

In [9]: licenses = re.split("\n+", s)

In [10]: licenseRe = re.compile(r'\(([A-Z]+)\)( No. (\d+))?')

In [11]: for license in licenses:
   ....:     m = licenseRe.search(license)
   ....:     print m.group(1, 3)

('ABTA', '56542')
('ATOL', None)
('IATA', None)
('ITMA', None)

Kent


More information about the Tutor mailing list