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