如何在Python2环境下实现固定小数位、列对齐的numpy文本输出
Python2 环境下的格式化输出实现方案
核心调整点
- 清理原有冗余代码:删除重复导入的
numpy模块,修正循环中原代码错误的输出值(原代码中第四位写死的1000000与需求的1.0000000不一致) - 原代码直接用逗号分隔参数print的方式,是靠Python解释器自动加空格分隔,既不能控制固定的列间空格数,也会因为数值本身长度不一致导致列错位。因此替换为Python2全版本兼容的字符串格式化规则,为每个输出数值统一设置7位小数精度,配合固定列宽实现自动对齐。
- 增加文件写入逻辑,将格式化完成的内容逐行写入目标文本文件,而非仅输出到控制台
- 修正原循环的边界问题:
np.arange是左闭右开的区间,直接写np.arange(-0.25, 0.25, theta)会漏掉端点0.25,需要将上界稍微放大半个步长,保证示例中的0.25对应行能正常输出
调整后的可直接运行代码
#!/usr/bin/env python2 import numpy as np import math # 初始化基础参数 kz = 0.0 kx = 0.0 ky = 0.0 theta = 0.01 # 第四列固定值 fixed_4th_col = 1.0 # 打开输出文件准备写入 with open("calc_result.txt", "w") as out_file: # 遍历取值,上界加半个步长保证包含0.25的端点 for i in np.arange(-0.25, 0.25 + theta/2, theta): col1 = kx + i col2 = ky + i col3 = kz col4 = fixed_4th_col # 格式化规则:每个数值占11位宽度,保留7位小数,右对齐,自然形成3个空格的列间隔 formatted_line = "%11.7f%11.7f%11.7f%11.7f" % (col1, col2, col3, col4) # 写入当前行并换行 out_file.write(formatted_line + "\n")
格式匹配说明
- 生成的输出开头会自动留出2个空格的缩进,和参考示例完全一致
- 每列数值统一保留7位小数,不会出现长短不一的情况
- 列与列之间自动留出3个空格的间隔,整体排版完全对齐
- 参考示例中第二行数值末尾多余的小数点属于输入笔误,代码输出不会出现这类冗余字符
- 如果需要微调列间隔,只需要调整格式化字符串中每个
%后的宽度值(比如把11改成12,间隔就会增加1个空格),灵活适配排版要求
内容的提问来源于stack exchange,提问作者ashice
相关产品推荐
相关产品推荐

