我想格式化一个字符串并能够使用点运算符,以便我可以构造包含例如{user.name}
,{product.price}
。
我尝试了这个:
'Hello {user.name}'.format( {'user': { 'name': 'Markus' } } )
KeyError: 'user'
'Hello {user.name}'.format( **{'user': { 'name': 'Markus' } } )
AttributeError: 'dict' object has no attribute 'name'
有办法吗?
最佳答案
不幸的是,默认情况下Python dict
对象是不可访问的属性(即点符号)。因此,您可以辞职使用丑陋的方括号表示法:
'Hello {user[name]}'.format( **{'user': { 'name': 'Markus' } } )
或者,您可以将数据包装在可点访问的对象中。您可以从PyPI安装一些属性可访问的字典类,例如stuf。
from stuf import stuf
'Hello {user.name}'.format( **stuf({'user': { 'name': 'Markus' } }) )
我倾向于将集合保存在
stuf
对象中,以便可以通过属性轻松访问它们。关于python - 如何在Python格式的字符串中使用点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29035168/