You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析张量格式的科学计数法文本文件并转换为普通浮点数值

问题原因

你原来的代码逻辑存在错误:多个if not判断只要满足其中一个条件就会直接写入原行,几乎没有实现冗余字符清理、格式转换的需求。

修复后完整代码

import os
import re

# 匹配科学计数法格式数字的正则规则
num_pattern = re.compile(r'\d+\.?\d*e[+-]\d+')

for filename in os.listdir():
    if not filename.endswith(".txt"):
        continue
    with open(filename, "r+", encoding="utf-8") as f:
        content = f.read()
        # 提取文件中所有符合规则的数字串
        nums = num_pattern.findall(content)
        # 转换为十进制浮点数
        float_nums = [float(num) for num in nums]
        # 清空原文件内容
        f.truncate(0)
        f.seek(0)
        # 按每5个为一行格式化后写入,和示例输出格式对齐
        for idx in range(0, len(float_nums), 5):
            line_nums = float_nums[idx:idx+5]
            formatted = [
                f"{line_nums[0]:.2f}", f"{line_nums[1]:.2f}",
                f"{line_nums[2]:.2f}", f"{line_nums[3]:.2f}",
                f"{line_nums[4]:.5f}"
            ]
            f.write(" ".join(formatted) + "\n")

说明

  • 正则提取数字的方案不需要专门处理tensor、括号、device等冗余内容,自动跳过所有非目标字符,适配性更强
  • 自动完成科学计数法到十进制小数的转换,你可以通过修改f"{x:.nf}"中的n值调整不同位置数字的保留小数位数
  • 自动按原数据的每行5个的结构输出,符合你的预期格式要求

内容的提问来源于stack exchange,提问作者reddevilsutd1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:06:08