1

如何格式化 arr 和 myname?

arr = { 
'pincode':'pincode',
'username':'username',
'password':'password',
'action':'action',
'forward':'forward'
}
myname="myname"
print """my pincode is: %(pincode)s and my name is: %s !""" % {arr, myname}
print """my pincode is: %(pincode)s and my name is: %s !""" % (arr, myname)

期待输出:

我的密码是:密码,我的名字是:我的名字!

得到:

TypeError: format requires a mapping

TypeError: unhashable type: 'dict'

TypeError: not enough arguments for format string
4

3 回答 3

2

如何使用新的str.format

arr = { 
'pincode':'PINCODE',
'username':'USERNAME',
'password':'PASSWORD',
'action':'ACTION',
'forward':'FORWARD'
}
myname="MYNAME"
print """my pincode is: {pincode} and my name is: {0}!""".format(myname, **arr)

例如:

>>> arr = {
... 'pincode':'PINCODE',
... 'username':'USERNAME',
... 'password':'PASSWORD',
... 'action':'ACTION',
... 'forward':'FORWARD'
... }
>>> myname="MYNAME"
>>> print """my pincode is: {pincode} and my name is: {0}!""".format(myname, **arr)
my pincode is: PINCODE and my name is: MYNAME!
>>>

应该将**arr字典作为关键字传递给format.

于 2013-09-04T00:27:31.003 回答
1

这有效:

arr = { 
'pincode':'pincode',
'username':'username',
'password':'password',
'action':'action',
'forward':'forward'
}
myname="myname"
print """my pincode is: %s and my name is: %s !""" % (arr['pincode'], myname)

您还可以使用带有格式的命名参数:

print 'my pincode is: {pincode} and my name is: {myname} !'.format(
       myname=myname, **arr)

请注意myname在使用设置映射中的所有其他关键字之前将关键字设置为其值**arr

干杯。

于 2013-09-04T00:20:42.263 回答
1
arr = {
'pincode':'pincode',
'username':'username',
'password':'password',
'action':'action',
'forward':'forward'
}
myname="myname"
print """my pincode is: %s and my name is: %s !""" % (arr['pincode'], myname)
print """my pincode is: %s and my name is: %s !""" % (arr['pincode'], myname)

这似乎有效

编辑:啊,被打败了!

于 2013-09-04T00:26:38.833 回答