如何将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
相关产品推荐
相关产品推荐

