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

如何将TXT文件内科学计数法表示的数值转换为普通float格式

问题原因与修正方案

原代码错误点

  • 直接对整行内容做float(line)转换:每行包含多个用空格分隔的科学计数字符串,无法直接转为单个float值,会直接抛出类型错误
  • r+模式下读取完全部内容后,文件指针停在文件末尾,直接写入会把新内容追加到原内容之后,不会覆盖原有内容
  • 没有对float类型的输出格式做控制,Python默认可能仍会输出科学计数法格式的字符串,无法得到你要的普通小数效果
  • 写入的时候直接写float类型对象会报错,文件写入只能接收字符串类型数据

修正后的代码

import os

# 遍历当前目录下所有txt文件
for filename in os.listdir():
    if not filename.endswith(".txt"):
        continue
    # 先读取全部内容处理
    processed_lines = []
    with open(filename, "r", encoding="utf-8") as f:
        for line in f:
            # 去除首尾空白,拆分单个数值
            nums = line.strip().split()
            # 逐个转float后格式化为普通小数字符串,如需匹配你示例最后一位乘100的效果可改为 float(num)*100
            formatted_nums = [f"{float(num):g}" for num in nums]
            # 拼接回一行,保留换行
            processed_lines.append(" ".join(formatted_nums) + "\n")
    # 覆盖写入处理后的内容
    with open(filename, "w", encoding="utf-8") as f:
        f.writelines(processed_lines)

代码说明

  • 用split()拆分每行的多个数值,逐个转换为float类型
  • 格式控制符{:g}会自动去除数值末尾无用的0,且默认输出非科学计数法的小数格式,完全匹配常规科学计数法转普通小数的需求
  • 先读取完全部文件内容处理完成后,再用w模式覆盖写入原文件,避免读写指针混乱的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:03