如何使用Python从SACS结构数据文件中提取构件组数据信息并导出

news2026/2/14 1:50:45

SACS 是一种广泛用于结构分析和设计的软件系统,其数据文件格式常用于存储结构模型和分析结果。本文将介绍如何从一个复杂的 SACS 文件 中提取关键信息,并将其整理成易于理解的表格格式。

我们将关注 SACS 文件中的一个部分,名为 “GRUP”,它包含了结构组的数据。我们将学习如何提取并整理这个部分的信息。

步骤一:读取 SACS 文件

首先,我们需要将 SACS 文件中的内容读取到计算机中。可以使用 Python 等编程语言进行读取。Python 提供了非常方便的工具来处理文本文件。假设我们有一个名为 sacinp.1 的 SACS 文件,我们可以通过以下代码将其读取到内存中:

with open('sacinp.20240424V15-ftg+leida', 'r') as file:
    lines = file.readlines()

通过 open() 函数打开文件并使用 readlines() 方法将文件的每一行内容读取到一个列表中,方便我们后续处理。

步骤二:定位并提取 GRUP 数据

在 SACS 文件中,数据通常被分成多个块,每个块有一个特定的标识符。我们的目标是提取 “GRUP” 数据块中的信息。通常,数据块的开始和结束都有明显的标记。例如,GRUP 部分通常以 “GRUP” 开头,以 “MEMBER” 或其他关键词结束。我们可以通过扫描文件内容,找出包含 GRUP 部分的行,并提取相关数据。

grup_data = []
in_grup_section = False

for line in lines:
    line = line.strip()  # 去掉行尾的空格和换行符

    if line.startswith('GRUP'):
        in_grup_section = True
        grup_data.append(line)  # 记录 'GRUP' 部分的起始行
        continue

    if line.startswith('MEMBER'):
        break  # 'MEMBER' 部分表示结束

    if in_grup_section:
        grup_data.append(line)  # 记录 'GRUP' 部分的数据

这段代码通过 startswith() 函数检查每一行是否以 “GRUP” 或 “MEMBER” 开头。通过这种方法,我们能够提取出 GRUP 部分的所有数据。

步骤三:整理提取的数据

提取到的 GRUP 数据通常是未经过处理的文本,需要进一步整理成结构化的形式。一个常见的做法是将其转换为表格形式,这样便于后续分析和查看。我们可以使用 pandas 库将数据转换为一个结构化的 DataFrame,它就像一个电子表格,有行和列,方便查看和处理。

import pandas as pd

# 假设数据是以空格为分隔符
grup_split_data = []
for row in grup_data:
    row_values = [value for value in row.split() if value]  # 按空格拆分数据,并去掉空字符串
    grup_split_data.append(row_values)

grup_df = pd.DataFrame(grup_split_data, columns=['GRUP', 'Member Group', 'Section', 'E', 'TUB_D', 'TUB_T', 'G', 'FY', '变截面'])

这段代码通过 split() 方法按空格拆分每行数据,并利用 pandas 将拆分后的数据转换为一个表格。每一列都有了明确的名称,便于理解和查看。

步骤四:清洗和转换数据

有时,数据虽然已经整理成表格,但可能仍然需要进一步的清洗和转换。例如,某些列的格式不符合预期,或者我们需要将某些字段拆分成多个列。在处理 SACS 数据时,可能会遇到这样的情况,比如某一列包含多个信息,我们需要将其拆分成独立的列。

for i in range(len(grup_df['Section'])):
    if len(grup_df['Member Group'][i]) > 3:
        grup_df.loc[i, 'E'] = grup_df.loc[i, 'Section']
        grup_df.loc[i, 'Section'] = grup_df.loc[i, 'Member Group'][4:]
        grup_df.loc[i, '变截面'] = grup_df.loc[i, 'Member Group'][3:4]
        grup_df.loc[i, 'Member Group'] = grup_df.loc[i, 'Member Group'][:3]
    else:
        grup_df.loc[i, '变截面'] = None

这段代码根据具体的规则对 E、Section 和 变截面 等列的数据进行拆分和调整。通过这种方式,我们可以确保每一列的数据符合预期的格式。

步骤五:保存和导出数据

完成数据清洗和转换后,我们可能希望将结果保存到一个外部文件中,以便后续分析或报告。通常,我们会将处理后的数据导出为 Excel 文件,方便进一步查看和分析。

grup_df.to_excel('grup_data_output.xlsx', index=False)

通过 to_excel() 方法,我们可以将最终处理好的数据保存为 Excel 文件,index=False 表示不将行索引保存到文件中。

总结

通过上述步骤,我们成功地从一个复杂的 SACS 文件 中提取了所需的 GRUP 数据,并将其整理成了易于理解和分析的表格形式。整个过程展示了如何通过编程读取文件、提取有用信息、清洗数据以及将结果保存成结构化的表格。

这只是数据处理中的一个小例子,但它展示了如何使用编程工具(如 Python 和 pandas)高效地处理和分析复杂的数据文件。无论是在结构工程、海洋工程,还是其他领域,掌握这些数据处理技能都能帮助我们更好地理解和利用数据,为决策提供支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习环境】NVIDIA Driver、Cuda和Pytorch(centos9机器,要用到显示器)

文章目录 一 、Anaconda install二、 NIVIDIA driver install三、 Cuda install四、Pytorch install 一 、Anaconda install Step 1 Go to the official website: https://www.anaconda.com/download Input your email and submit. Step 2 Select your version, and click i…

Lecture 17

10’s Complement Representation 主要内容: 1. 10’s 补码表示: • 10’s 补码表示法需要指定表示的数字位数(用 n 表示)。 • 表示的数字取决于 n 的位数,这会影响具体数值的解释。 2. 举例: • 如果采用 3 位补码&…

惠州市政数局局长杨伟斌:惠州市公共数据授权运营模式探索

近期,2024数字资产管理大会召开。会上,惠州市政务服务和数据管理局局长杨伟斌在会上做了题为基于“隐私计算区块链”的惠州市公共数据授权运营模式探索主旨演讲,从三个方面展开,一是建制度汇数据,二是夯基础保安全&…

C#编写的金鱼趣味小应用 - 开源研究系列文章

今天逛网,在GitHub中文网上发现一个源码,里面有这个金鱼小应用,于是就下载下来,根据自己的C#架构模板进行了更改,最终形成了这个例子。 1、 项目目录; 2、 源码介绍; 1) 初始化; 将样…

探索贝叶斯魔法和误差的秘密

引言 今天我们要一起学习两个神秘的魔法概念:贝叶斯魔法和误差的秘密。这些概念听起来可能有点复杂,但别担心,我会用最简单的方式来解释它们。 一、贝叶斯魔法 贝叶斯魔法是一种预测的魔法,它帮助我们理解在不确定的情况下事情…

深度学习blog-卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Network,CNN)是一种广泛应用于计算机视觉领域,如图像分类、目标检测和图像分割等任务中的深度学习模型。 1. 结构 卷积神经网络一般由以下几个主要层组成: 输入层:接收…

深度学习笔记(6)——循环神经网络RNN

循环神经网络 RNN 核心思想:RNN内部有一个“内部状态”,随着序列处理而更新 h t f W ( h t − 1 , x t ) h_tf_W(h_{t-1},x_t) ht​fW​(ht−1​,xt​) 一般来说 h t t a n h ( W h h h t − 1 W x h x t ) h_ttanh(W_{hh}h_{t-1}W_{xh}x_t) ht​tanh(Whh​ht−1​Wxh​xt…

最新版Edge浏览器加载ActiveX控件技术——alWebPlugin中间件V2.0.28-迎春版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

【前端,TypeScript】TypeScript速成(三):枚举类型

枚举类型 枚举类型是 TypeScript 相较于 JavaScript 而言特有的部分。一个简单的枚举声明如下: enum HTTPStatus {OK,NOT_FOUND,INTERNAL_STATUS_ERROR, }与编译成 JavaScript 的代码相比较: 显然 TypeScript 非常的简洁。 尝试使用上述枚举类型&…

Webpack学习笔记(6)

首先搭建一个基本的webpack环境: 执行npm init -y,创建pack.json,保存安装包的一些信息 执行npm install webpack webpack-cli webpack-dev-server html-webpack-plugin -D,出现node_modules和package-lock.json。 1.source-Ma…

Java高频面试之SE-06

hello啊,各位老6!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 访问修饰符 public、private、protected的区别是什么? 在Java中,访问修饰符用于控制类、方法和变量的访问权限。主要的访…

报表工具DevExpress Reporting v24.2亮点 - AI功能进一步强化

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 报表工具DevExpress Reporting v24.2将于近期发…

每天40分玩转Django:Django表单集

Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…

MVCC实现原理以及解决脏读、不可重复读、幻读问题

MVCC实现原理以及解决脏读、不可重复读、幻读问题 MVCC是什么?有什么作用?MVCC的实现原理行隐藏的字段undo log日志版本链Read View MVCC在RC下避免脏读MVCC在RC造成不可重复读、丢失修改MVCC在RR下解决不可重复读问题RR下仍然存在幻读的问题 MVCC是什么…

自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator

完成了文本识别和人脸检测的项目后,我发现人脸比对是一个更有趣的一个小技术玩意儿。我决定整一整,也就是对HarmonyOS Next最新版本API 13中的Core Vision Face Comparator API的学习,这项技术能够对人脸进行高精度比对,并给出相似…

代码解析:安卓VHAL的AIDL参考实现

以下内容基于安卓14的VHAL代码。 总体架构 参考实现采用双层架构。上层是 DefaultVehicleHal,实现了 VHAL AIDL 接口,并提供适用于所有硬件设备的通用 VHAL 逻辑。下层是 FakeVehicleHardware,实现了 IVehicleHardware 接口。此类可模拟与实…

通过 Ansys Electronics Desktop 中的高级仿真优化 IC 设计

半导体行业继续通过日益复杂的集成电路 (IC) 设计突破技术界限。随着工艺节点缩小和电路密度达到前所未有的水平,电磁效应对设备性能和可靠性变得越来越重要。现代 IC 设计面临着来自复杂的布局相关耦合机制、信号完整性问题和功率分布问题的挑战,这些问…

Kafka数据迁移全解析:同集群和跨集群

文章目录 一、同集群迁移二、跨集群迁移 Kafka两种迁移场景,分别是同集群数据迁移、跨集群数据迁移。 一、同集群迁移 应用场景: broker 迁移 主要使用的场景是broker 上线,下线,或者扩容等.基于同一套zookeeper的操作。 实践: 将需要新添加…

【OpenGL ES】GLSL基础语法

1 前言 本文将介绍 GLSL 中数据类型、数组、结构体、宏、运算符、向量运算、矩阵运算、函数、流程控制、精度限定符、变量限定符(in、out、inout)、函数参数限定符等内容,另外提供了一个 include 工具,方便多文件管理 glsl 代码&a…