Python中如何格式化字典内浮点数以去除首尾多余零?
实现字典浮点数的紧凑格式化
方法一:字符串直接替换
这种方法简单直接,针对目标格式做精准替换:
original_dict = {'0': 0.773, '1': -0.529, '2': -0.004, '3': -0.035} # 格式化每个值 formatted_items = [] for key, value in original_dict.items(): val_str = str(value) # 替换正数的"0."为".",负数的"-0."为"-." val_str = val_str.replace("0.", ".").replace("-0.", "-.") formatted_items.append(f"'{key}':{val_str}") # 生成紧凑的字典字符串 result = "{" + ",".join(formatted_items) + "}" print(result) # 输出: {'0':.773,'1':-.529,'2':-.004,'3':-.035}
方法二:正则表达式替换
用正则可以更灵活处理类似格式,适合扩展更多场景:
import re original_dict = {'0': 0.773, '1': -0.529, '2': -0.004, '3': -0.035} # 匹配可选负号+0+小数点的模式 pattern = r'(-?)0\.' formatted_items = [] for key, value in original_dict.items(): val_str = str(value) # 替换为 负号(如果有)+ 小数点 val_str = re.sub(pattern, r'\1.', val_str) formatted_items.append(f"'{key}':{val_str}") result = "{" + ",".join(formatted_items) + "}" print(result)
保存到文本文件
直接将生成的紧凑字符串写入文件,最大化节省存储空间:
with open('formatted_data.txt', 'w', encoding='utf-8') as f: f.write(result)
补充说明
- 如果遇到值为整数形式的浮点数(如
0.0、1.000),若需要进一步去除尾随零和小数点,可以额外处理:# 示例:将1.000转为1,0.0转为0,-.0转为-0 val_str = re.sub(r'\.0+$', '', val_str) val_str = re.sub(r'^\.(0+)$', r'0', val_str) val_str = re.sub(r'^-\.(0+)$', r'-0', val_str)
内容的提问来源于stack exchange,提问作者FrostDream
相关产品推荐
相关产品推荐

