我想做的事
我正在尝试使用 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 for 循环以尽可能快地处理数据。将完整文件读入内存并将其存储在fContent
我尝试的变量中后:
vertices = np.array(re.findall("^.{24}(.{8})(.{8})(.{8})", fContent, re.MULTILINE), dtype=float)
然而,这对于-3.-14
表达式来说是不够的。一种解决方案是遍历正则表达式和替换的结果字符串元组,.-
然后.e-
从字符串元组列表中创建 NumPy 数组。(上面的代码中没有显示)。但是,我认为这种方法会很慢,因为它涉及对所有找到的正则表达式元组进行循环并执行替换。
我在找什么
我正在寻找任何快速读取数据的方法。我目前的希望是成功处理“ -3.-14
”问题的智能正则表达式。正则表达式需要替换所有.-
字符,.e-
但前提是.
不在 8 个字符块的末尾。到目前为止,我无法创建这样的正则表达式。但正如我所说,任何其他快速读取数据的方式也是非常受欢迎的。