我在Python中有一个字典,其中包含如下浮点值:
{'0': 0.773, '1': -0.529, '2': -0.004, '3': -0.035}
字符串我想格式化字典中的值,以删除小数点前不必要的尾随零和前导零。例如,我想输出为:
{'0':.773,'1':-.529,'2':-.004,'3':-.035}
型我怎么能用re(或任何其他方式)来做呢?我想把数据保存在一个文本文件中,我想尽可能多地保存空间。谢谢你,谢谢
rkue9o1l1#
现代Python不会用额外的尾随零来字符串化float s(唯一的尾随零是整数小数点后的单个0),所以这个问题已经得到了处理。要从这个形式的dict的自然repr得到你想要的形式,只需执行几个replace项:
float
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.0到1.0的范围之外,则需要稍微调整,使10.0不会变为1.0:
-1.0
1.0
10.0
print(repr(s).replace(' 0.','.').replace('-0.','-.').replace(': ', ':'))
型显然,这对于带有任意数据的dict不能正常工作(例如,如果它具有恰好包含0.或:的字符串键或值),但对于示例,它工作得很好,不需要正则表达式。
0.
:
1条答案
按热度按时间rkue9o1l1#
现代Python不会用额外的尾随零来字符串化
float
s(唯一的尾随零是整数小数点后的单个0
),所以这个问题已经得到了处理。要从这个形式的
dict
的自然repr
得到你想要的形式,只需执行几个replace
项:字符串
其输出:
型
如果
float
s可能在-1.0
到1.0
的范围之外,则需要稍微调整,使10.0
不会变为1.0
:型
显然,这对于带有任意数据的
dict
不能正常工作(例如,如果它具有恰好包含0.
或:
的字符串键或值),但对于示例,它工作得很好,不需要正则表达式。