我想做什么
我试图使用python解析nastran文件的几何信息。我目前的尝试使用NumPy和正则表达式。重要的是要快速读取数据,结果是一个NumPy数组。
Nastran文件格式
nastran文件可以如下所示:
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坐标。上述坐标的通用表示将是
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变量中之后,我尝试:
vertices = np.array(re.findall("^.{24}(.{8})(.{8})(.{8})", fContent, re.MULTILINE), dtype=float)但是,对于-3.-14表达式来说,这是不够的。一个解决方案是遍历正则表达式的字符串元组,并使用.-替换所有.e-,然后从字符串元组列表中创建NumPy数组。(未在上述代码中显示)。但是,我认为这种方法会很慢,因为它涉及到正则表达式的所有元组的循环并执行替换。
我在找什么
我正在寻找任何快速阅读的方式在数据。我目前的希望是建立一个聪明的正则表达式,成功地解决"-3.-14“问题。正则表达式需要将所有.-字符替换为.e-,但如果.不在8个字符块的末尾,则只需使用。到目前为止,我还无法创建这样一个正则表达式。但正如我所说,任何其他快速阅读数据的方式也是非常受欢迎的。
发布于 2016-08-05 06:33:50
https://stackoverflow.com/questions/38782398
复制相似问题