Steve Holden wrote:

I've been wondering whether it's possible to perform a similar analysis on non-mapping-type format strings, so as to know how long a tuple to provide, or whether I'd be forced to lexical analysis of the form string.

regards
 Steve
I do not know if it is possible to do that.

But if you are forced to parse the string, the following might help:

import re
parse_format = re.compile(r'''
    \%                                  # placeholder
    (?P<name>\([\w]+\))?                # 0 or 1 named groups
    (?P<conversion>[\#0\-\+]?)          # 0 or 1 conversion flags
    (?P<width>[\d]* | \*)               # optional minimum conversion width
    (?:.(?P<precision>[\d]+ | \*))?     # optional precision
    (?P<lengthmodifier>[hlL]?)          # optional length modifier
    (?P<type>[diouxXeEfFgGcrs]{1})      # conversion type - note %% omitted
    ''',
    re.VERBOSE
    )


>>> parse_format.findall("%(name)s, %-4.2f, %d, %%")
[('(name)', '', '', '', '', 's'), ('', '-', '4', '2', '', 'f'), ('', '', '', '', '', 'd')]
>>>


I used this successfully in a few simple cases, but I haven't really tested it.

cheers
Michael

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to