Printing formatted strings from a dictionary
Michael Hudson
mwh at python.net
Thu May 13 07:57:00 EDT 2004
tkpmep at hotmail.com (Thomas Philips) writes:
> I want to print "1 spam 4 you" using a formatted string that gets its
> inputs from the dictionary d={'n1':1, 's1':'spam', 'n2':4}. To do so,
> I write
>
> >>> x="%('n1')d %('s1')s %('n2')d you"
> >>> x % d
>
> Traceback (most recent call last):
> File "<pyshell#22>", line 1, in -toplevel-
> x % d
> KeyError: "'n1'"
> >>>
>
> However, I get what I want if I edit x to remove the quotes around n1,
> s1 and n2 and write
> >>> x="%(n1)d %(s1)s %(n2)d you"
> >>> x % d
> '1 spam 4 you'
>
> The syntax that works seems to run counter to the way dictionaries
> work:
> >>> d['n1']
> 1
> >>> d[n1]
>
> Traceback (most recent call last):
> File "<pyshell#18>", line 1, in -toplevel-
> d[n1]
> NameError: name 'n1' is not defined
>
> What is the error in my logic?
Um. If the n1 is already inside a string literal, adding more quotes
would be redundant?
CHeers,
mwh
--
A difference which makes no difference is no difference at all.
-- William James (I think. Reference anyone?)
More information about the Python-list
mailing list