Mar*_*son 9 python string-formatting
我想格式化字符串,并能够使用点操作,这样我就可以构建含有例如模板字符串{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'
Run Code Online (Sandbox Code Playgroud)
有办法吗?
dict遗憾的是,Python 对象在属性上不可访问(即使用点表示法).所以你可以让自己屈服于更丑陋的括号表示法:
'Hello {user[name]}'.format( **{'user': { 'name': 'Markus' } } )
Run Code Online (Sandbox Code Playgroud)
或者,您可以将数据包装在可通过点访问的对象中.您可以从PyPI安装一些属性可访问的字典类,例如stuf.
from stuf import stuf
'Hello {user.name}'.format( **stuf({'user': { 'name': 'Markus' } }) )
Run Code Online (Sandbox Code Playgroud)
我倾向于将我的集合保存在stuf对象中,以便我可以通过属性轻松访问它们.