如何用Python将OpenSeesPy导出的无逗号txt数据转为双列可读格式
OpenSeesPy导出空格分隔TXT文件的分列读取解决方案
你导出的
Column.txt存在三类干扰字符:首尾的{}、每行末尾的英文逗号,两列数据实际以空白字符(空格/制表符等)分隔,只需先清理干扰字符再按空白拆分即可完成分列读取。
方法1:Python原生实现(无第三方依赖)
无需安装额外库,直接逐行处理即可:
# 初始化存储两列数据的空列表 col1, col2 = [], [] with open("Column.txt", "r", encoding="utf-8") as f: for line in f: # 清理每行的干扰字符与首尾空白 cleaned_line = line.strip().replace("{", "").replace("}", "").replace(",", "") # 跳过清理后的空行 if not cleaned_line: continue # 按任意空白字符拆分,转浮点数后存入对应列表 val1, val2 = map(float, cleaned_line.split()) col1.append(val1) col2.append(val2) # 验证结果 print("第一列:", col1) print("第二列:", col2)
方法2:Numpy快速读取(适合科学计算场景)
如果已经安装Numpy,可快速读取为数组格式,方便后续OpenSees相关计算:
import numpy as np with open("Column.txt", "r", encoding="utf-8") as f: # 一次性清理所有干扰字符 cleaned_text = f.read().replace("{", "").replace("}", "").replace(",", "") # 从字符串读取数值,重构成两列数组 data = np.fromstring(cleaned_text, sep=" ").reshape(-1, 2) col1, col2 = data[:, 0], data[:, 1]
方法3:Pandas读取(适合后续数据分析场景)
如果需要对结果做统计、绘图等后续分析,可直接读取为DataFrame格式:
import pandas as pd # 读取时指定分隔符为任意空白,自动处理干扰字符 df = pd.read_csv( "Column.txt", sep=r"\s+", # 匹配任意数量空白字符 header=None, names=["位移", "应力"] # 可根据你的实际业务修改列名 ) # 清理列值中的逗号与大括号 df = df.replace(r"[{},]", "", regex=True).astype(float) # 单独提取两列 col1, col2 = df["位移"].to_list(), df["应力"].to_list()
注:以上三种方法均兼容单空格、多空格、制表符分隔的场景,无需提前调整原文件的分隔格式。
内容的提问来源于stack exchange,提问作者HakanKeskin
相关产品推荐
相关产品推荐

