python .format()重复的字段?
发布时间:2021-03-30 11:34:19 所属栏目:Python 来源:互联网
导读:我知道在 python3中,你可以这样做: {0} {1} {0}.format(13, 42)13 42 13 所以你多次使用相同的参数.我想做相反的事情.我有一系列数字.我想以某种方式使用单个格式说明符打印它们,但我没有看到一种方法来指示格式语法,给定标识符应该使用下一个N个参数.我可以
|
我知道在 python3中,你可以这样做: >>> '{0} {1} {0}'.format(13,42)
'13 42 13'
所以你多次使用相同的参数.我想做相反的事情.我有一系列数字.我想以某种方式使用单个格式说明符打印它们,但我没有看到一种方法来指示格式语法,给定标识符应该使用下一个N个参数.我可以使用减少 >>> reduce(lambda out,x: out + '{:02X}'.format(x),b'x60x0dx1axdd','')
'600D1ADD'
但是我希望能有一个单一的格式调用,因为我想要放置一些其他格式的字符串. 解决方法没有任何方法可以做到这一点.您可以做的是预先格式化您的数字列表,然后将格式化的字符串作为单个项目传递给第二轮格式:>>> nums = (13,42)
>>> '{0} is {1}'.format('my stuff',''.join('{:02X}'.format(a) for a in nums))
'my stuff is 0D2A'
如果需要,您可以编写一个自定义Formatter子类,它接受一系列数字作为要格式化的单个项目,并将它们一起格式化.这可以让我做一些像myFormatter.format(‘{0}是{1:list}’,’我的东西’,(13,42)).以下是它的工作原理: class ListFormatter(string.Formatter):
def format_field(self,value,spec):
if spec == 'list':
return ''.join('{:02X}'.format(a) for a in value)
else:
return super(ListFormatter,self).format_field(value,spec)
>>> lf = ListFormatter()
>>> lf.format('{0} is {1:list}','my stuff',[1,43])
'my stuff is 012B' (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – Fedora上的psycopg2
- 有没有办法找出文件的名称stdout被重定向到Python
- python – django:将每个用户数据分开
- python – django:django-tables2 DetailView CBV不会显示
- import pyttsx在python 2.7中工作,但不在python3中
- python – Numpy相当于if / else list comprehension
- Python分隔线分割问题
- python – Tkinter Canvas将项目移动到顶层
- python – 如何访问`pip –user`安装的软件包?
- python – 在SQLAlchemy中动态设置__tablename__来分片?
