如何在字典中格式化浮点数以删除Python中的尾随和前导零?

qltillow  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(126)

我在Python中有一个字典,其中包含如下浮点值:

{'0': 0.773, '1': -0.529, '2': -0.004, '3': -0.035}

字符串
我想格式化字典中的值,以删除小数点前不必要的尾随零和前导零。例如,我想输出为:

{'0':.773,'1':-.529,'2':-.004,'3':-.035}


我怎么能用re(或任何其他方式)来做呢?
我想把数据保存在一个文本文件中,我想尽可能多地保存空间。
谢谢你,谢谢

rkue9o1l

rkue9o1l1#

现代Python不会用额外的尾随零来字符串化float s(唯一的尾随零是整数小数点后的单个0),所以这个问题已经得到了处理。
要从这个形式的dict的自然repr得到你想要的形式,只需执行几个replace项:

s = {'0': 0.773, '1': -0.529, '2': -0.004, '3': -0.035}
print(repr(s).replace('0.','.').replace(': ', ':'))

字符串
其输出:

{'0':.773, '1':-.529, '2':-.004, '3':-.035}


如果float s可能在-1.01.0的范围之外,则需要稍微调整,使10.0不会变为1.0

print(repr(s).replace(' 0.','.').replace('-0.','-.').replace(': ', ':'))


显然,这对于带有任意数据的dict不能正常工作(例如,如果它具有恰好包含0.:的字符串键或值),但对于示例,它工作得很好,不需要正则表达式。

相关问题