首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python读取nastran几何文件

用python读取nastran几何文件
EN

Stack Overflow用户
提问于 2016-08-05 06:18:58
回答 1查看 841关注 0票数 2

我想做什么

我试图使用python解析nastran文件的几何信息。我目前的尝试使用NumPy和正则表达式。重要的是要快速读取数据,结果是一个NumPy数组。

Nastran文件格式

nastran文件可以如下所示:

代码语言:javascript
复制
GRID           1        3268.616-30.0828749.8656    
GRID           2        3268.781  -3.-14749.8888
GRID           3        3422.488580.928382.49383
GRID           4        3422.488     10.-2.49383
...

我只对文件的正确部分感兴趣。在这里,信息分别以8个字符的块表示,分别用于x、y和z坐标。上述坐标的通用表示将是

代码语言:javascript
复制
3268.616, -30.0828, 749.8656    
3268.781,  -3.e-14, 749.8888
3422.488, 580.9283, 82.49383
3422.488,      10., -2.49383

到目前为止我尝试过的

到目前为止,我尝试使用正则表达式和NumPy来避免所有类型的python循环,以尽可能快地处理数据。在将完整文件读入内存并将其存储在fContent变量中之后,我尝试:

代码语言:javascript
复制
vertices = np.array(re.findall("^.{24}(.{8})(.{8})(.{8})", fContent, re.MULTILINE), dtype=float)

但是,对于-3.-14表达式来说,这是不够的。一个解决方案是遍历正则表达式的字符串元组,并使用.-替换所有.e-,然后从字符串元组列表中创建NumPy数组。(未在上述代码中显示)。但是,我认为这种方法会很慢,因为它涉及到正则表达式的所有元组的循环并执行替换。

我在找什么

我正在寻找任何快速阅读的方式在数据。我目前的希望是建立一个聪明的正则表达式,成功地解决"-3.-14“问题。正则表达式需要将所有.-字符替换为.e-,但如果.不在8个字符块的末尾,则只需使用。到目前为止,我还无法创建这样一个正则表达式。但正如我所说,任何其他快速阅读数据的方式也是非常受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2016-08-05 06:33:50

像这样的东西有用吗?匹配.-并用.e-替换。

Regex:(\.-)(?!(.{7})?$)

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38782398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档