[Tutor] using re to build dictionary

Norman Khine norman at khine.net
Tue Feb 24 14:56:19 CET 2009


Thank you all, this is great.

Kent Johnson wrote:
> 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