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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:45:02