Python如何写入格式不统一的.dat文件:前3位科学计数法后2位为整数
Python支持和MATLAB非常接近的格式化字符串语法,可以直接实现你的需求,不需要手动拼接字符串。
核心实现方法
你可以直接套用和MATLAB几乎一致的格式声明,只需要额外把最后两个值转为整数类型即可:
# 直接使用%格式化,和你熟悉的MATLAB写法匹配 formatted_line = "%.6e %.6e %.6e %d %d\n" % ( final_BCT[r][0], final_BCT[r][1], final_BCT[r][2], int(final_BCT[r][3]), int(final_BCT[r][4]) )
如果使用Python3.6+版本,也可以用f-string实现:
a,b,c,d,e = final_BCT[r] formatted_line = f"{a:.6e} {b:.6e} {c:.6e} {int(d)} {int(e)}\n"
完整写入示例
如果需要循环写入所有行到.dat文件,可以参考以下代码:
# 以写入模式打开目标文件 with open("output.dat", "w", encoding="utf-8") as f: # 写入第一行内容(可根据你的实际需求调整第一行逻辑) f.write("这里替换为你文件第一行的实际内容\n") # 循环处理每一行数据 for row in final_BCT: a, b, c, d, e = row # 按要求格式化后写入 f.write("%.6e %.6e %.6e %d %d\n" % (a, b, c, int(d), int(e)))
原代码问题说明
你之前直接将numpy数组转为字符串的方式,会默认把所有元素都输出为浮点数格式,因此后两位也会保留小数位。使用格式化字符串可以精准控制每个位置的输出规则,完全匹配你的格式要求。
内容的提问来源于stack exchange,提问作者Radhika
相关产品推荐
相关产品推荐

