【发布时间】:2019-03-22 14:52:32
【问题描述】:
我正在尝试编写一个程序,该程序重复地从数百个 YAML 文件中读取数据,并将文件中包含的某些信息存储在某种表格中。该程序本质上会解析给定目录中的每个 YAML 文件并提取相关信息,直到每个文件都被成功解析。
其中一个 YAML 文件的内容示例:
%YAML:1.0
camera_rotation_wrt_base: !!opencv-matrix
cols: 3
data: [-0.0159428846, 0.0246045925, 0.999570131, -0.999774337, -0.0144301597, -0.0155909406,
0.0140403481, -0.999593139, 0.024829099]
dt: f
rows: 3
camera_translation_wrt_base: [0.4445618987083435, 0.11700689047574997, 1.5018157958984375]
object_rotation_wrt_base: !!opencv-matrix
cols: 3
data: [-0.74130547, -0.0615471229, 0.668339849, 0.669196069, -0.144052029, 0.728989482,
0.0514085107, 0.987654269, 0.147973642]
dt: f
rows: 3
object_rotation_wrt_camera: !!opencv-matrix
cols: 3
data: [-0.6565323818253673, 0.1588616842697038, -0.737379262582055, -0.07928983462501557,
-0.9866892288165471, -0.14197683014545748, -0.7501189077886223, -0.03474571781315458,
0.6603895951165363]
dt: f
rows: 3
object_translation_wrt_base: [1.1534364223480225, 0.05951927974820137, 1.3502429723739624]
object_translation_wrt_camera: [0.04407151401699165, 0.16979082390232392, 0.705698973194305]
template_id: 1965
我希望能够将来自 object_rotation_wrt_camera 键的数据键以及 object_translation_wrt_camera 键存储在 CSV 文件中,如下所示:
observation,rotation,translation
1,[-0.53434, 0.023343, .....],[0.54545,0.34344,....]
2,[-0.52234, 0.3433, .....],[0.65645,0.8787344,....]
3,[0.32234, 0.6453, .....],[0.622645,0.1787344,....]
在上表中,观测值与 yaml 文件有关,因此对于每个文件,CSV 文件中都存储了一个观测值,用于旋转和平移变量。 (注意:表中使用的句点仅表示旋转和平移变量会继续,因为它们很长)。
最后,我想创建一个最终的 CSV 文件,它与上面的文件类似,但是所有的旋转和平移值都是分开的(这意味着不是一列用于平移,一列用于旋转,而是有 3用于与前一个 CSV 文件列表中的 3 个值有关的翻译,以及与前一个 CSV 文件列表中的 9 个值中的每一个有关的 9 列),如下所示:
observation,tran1,tran2,tran3,rot1,rot2,rot3,rot4,rot5,rot6,rot7,rot8,rot9
1,-0.545434,4.54545,0.343434,.............................................
2,-0.4543,3.3434,0.3534,..................................................
【问题讨论】: