2015-11-06 66 views
0

我使用Python的格式迷你语言来引用字典。对于字典中的一个浮点数,我想打印它没有小数点。Python迷你语言格式规范,用于从浮点数中删除小数点

例如:

a_dict = {'a_float' : 321.5241, 
      'b_float' : 0.011322, 
      'c_float' : 24.12354} 

out = ('1 25142U {a_float:9.3f}\n' 
     '2 {b_float}{c_float:10.3f}').format(**a_dict) 

print out 

返回:

>>> 1 25142U 321.524 
>>> 2 0.011322 24.123 

然而,我想格式化b_float(以除去 '0'),使得打印出的回报:

>>> 1 25142U 321.524 
>>> 2 011322 24.123 

在迷你语言格式规范的背景下,这可能吗?我知道这可以通过(a)传入单个项目(并在参数中编辑它们)而不是字典本身或通过(b)后处理输出字符串来完成,但我想知道如果Python的迷你语言足够成熟,可以简单地将这个问题简化为迷你语言的格式规范。 (对于那些对此有兴趣的人,我试图从卫星参数字典中打印出一个TLE,如果你有兴趣,谷歌/维基百科可能会告诉你更多,但是每个角色的位置。重要的是,它承担了一些项目,如偏心率小数点后一位)

+1

愚蠢的问题:你能只是后期处理?如果字符串没有句点,你可以这样做:''{a_float}'。format(** a_dict).replace('。','')'如果你想要更多的尾随零,就像你的例子那样在格式化时执行此操作,或者使用'.ljust(8,'0')'将其扩展为固定宽度。 – ShadowRanger

+0

第二个字符串不是通过从第一个字符串中删除小数点而获得的。你能给出你想要的输出更精确的规格吗? – user2357112

+0

''{:08d}'.format(int(a_dict ['a_float'] * 10 ** 8))' - >''01132200'' – martineau

回答

0

再版转换浮点数到字符串,然后分割字符串

repr(0.011322).split('.')[-1] 
or 
repr(0.011322)[2:] 

output 
011322