我已经为 PLY 和 OBJ 等 3D 文件格式编写了很多简单的导入器,它们似乎具有非常基于状态的每行结构,使得解析非常容易。我的朋友希望我使用 python 为来自 mirai 的文件类型实现一个简单的导入器,我注意到可以有很多分层表示的数据,这与我之前使用的更简单的逐行格式不同。
我想知道我是否应该尝试使用一些 python 库、一些复杂的正则表达式为此创建一个完整的语法,或者我应该使用字符串替换来破解一些解决方案。任何人都可以为解析这种类型的文件提供任何好的建议吗?这个特定示例是一个导出的多维数据集。
filetype gx;
GrammarVersion 2.1.0.0;
TemplateVersion 2.1.0.0;
HostName "ZOO-HP";
UserName "Phil";
TimeStamp "Mon 20-Aug-12, 9:48 pm";
OSName "Windows NT 6.01.7601";
ApplicationName "Mirai";
ApplicationVersion "1.1.0.1 5629";
include "gbf-2-1-0-0.tpl";
include "cube_mirai.gmf";
body Polyhedron-31 (
vertices[] < (
coord -0.500000 -0.500000 0.500000 ;
)
(
coord -0.500000 0.500000 0.500000 ;
)
(
coord 0.500000 0.500000 0.500000 ;
)
(
coord 0.500000 -0.500000 0.500000 ;
)
(
coord 0.500000 -0.500000 -0.500000 ;
)
(
coord 0.500000 0.500000 -0.500000 ;
)
(
coord -0.500000 0.500000 -0.500000 ;
)
(
coord -0.500000 -0.500000 -0.500000 ;
)
>
faces[] < (
normal 0.000000 0.000000 1.00000 ;
vertex-indices[] <0;1;2;3;>
vertex-normal-indices[] <0;1;2;3;> )
(
normal 0.000000 0.000000 -1.00000 ;
vertex-indices[] <4;5;6;7;>
vertex-normal-indices[] <4;5;6;7;> )
(
normal 0.000000 1.00000 0.000000 ;
vertex-indices[] <1;6;5;2;>
vertex-normal-indices[] <1;6;5;2;> )
(
normal 0.000000 -1.00000 0.000000 ;
vertex-indices[] <7;0;3;4;>
vertex-normal-indices[] <7;0;3;4;> )
(
normal 1.00000 0.000000 0.000000 ;
vertex-indices[] <3;2;5;4;>
vertex-normal-indices[] <3;2;5;4;> )
(
normal -1.00000 0.000000 0.000000 ;
vertex-indices[] <7;6;1;0;>
vertex-normal-indices[] <7;6;1;0;> )
>
normals[] <-0.577350 -0.577350 0.577350 ;
-0.577350 0.577350 0.577350 ;
0.577350 0.577350 0.577350 ;
0.577350 -0.577350 0.577350 ;
0.577350 -0.577350 -0.577350 ;
0.577350 0.577350 -0.577350 ;
-0.577350 0.577350 -0.577350 ;
-0.577350 -0.577350 -0.577350 ;
>
)