> Only you know what anomalies will be found in your data-sets.  If
> you know/assert that
>
> -the only stuff in the formatting string is one set of characters
>
> -that stuff in the replacement-values can never include any of
> your format-string characters
>
> -that you're not using funky characters/formatting in your format
> string (such as "%%" possibly followed by an "s" to get the
> resulting text of "%s" after formatting, or trying to use other
> formatters such as the aforementioned "%f" or possibly "%i")
>
> then you should be safe.  It could also be possible (with my
> original replacement of "(.*)") if your values will never include
> any substring of your format string.  If you can't guarantee
> these conditions, you're trying to make a cow out of hamburger.
> Or a pig out of sausage.  Or a whatever out of a hotdog. :)
>
> Conventional wisdom would tell you to create a test-suite of
> format-strings and sample values (preferably worst-case funkiness
> in your expected format-strings/values), and then have a test
> function that will assert that the unformatting of every
> formatted string in the set returns the same set of values that
> went in.  Something like
>
> tests = {
>       'I was %s but now I am %s' : [
>               ('hot', 'cold'),
>               ('young', 'old'),
>               ],
>       'He has 3 %s and 2 %s' : [
>               ('brothers', 'sisters'),
>               ('cats', 'dogs')
>               ]
>       }
>
> for format_string, values in tests:
>       unformatter = format.replace('%s', '(.*)')
>       for value_tuple in values:
>               formatted = format_string % value_tuple
>               unformatted = unformatter.search(formatted).groups()
>               if unformatted <> value_tuple:
>                       print "%s doesn't match %s when unformatting %s" % (
>                               unformatted,
>                               value_tuple
>                               format_string)
> 
> -tkc

Thanks for all your help. I've gotten the idea.

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

Reply via email to