Python导入含方括号的.out文件时数据识别错误该如何解决
读取带方括号.out格式数据的可行方案
方法1:用ast.literal_eval直接解析(最省心,完全适配你的数据格式)
你的每行内容本身就是合法的Python列表面值,用ast模块的字面量解析器可以直接转换,不会破坏原有数组结构,全程不会修改原.out文件:
import numpy as np import ast # 读取所有行并转换为二维浮点数组 with open("你的文件路径.out", "r", encoding="utf-8") as f: frequencies = np.array([ast.literal_eval(line.strip()) for line in f if line.strip()])
运行后frequencies就是形状为(行数, 4)的二维数组,可直接用于后续绘图操作。
方法2:手动处理方括号(不想额外导入ast模块时用)
如果偏好手动处理字符,也可以直接对每行的方括号做裁剪后转数值:
import pandas as pd data = [] with open("你的文件路径.out", "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line: continue # 去掉首尾的方括号,按逗号分割后转浮点 row = [float(num.strip()) for num in line[1:-1].split(",")] data.append(row) # 可以按需转换为DataFrame或者numpy数组 frequencies_df = pd.DataFrame(data) frequencies_np = np.array(data)
原方法失效的原因
pd.read_csv和np.genfromtxt默认只会按分隔符切割内容,不会自动处理首尾的特殊符号[和],所以首尾两个数值会被识别为带括号的字符串,后续强行转类型就会报错。
内容的提问来源于stack exchange,提问作者Wilco Verweij
相关产品推荐
相关产品推荐

