2017-07-17 30 views
0

如果解析文件,我将不胜感激。我有另一方生成的文件,它是一个数据转储。我宁愿使用python来解析文件,但如果基于C的方法更容易,我会使用它。该文件是ASCII文本,格式如下:使用python解析文件的最佳方法

Sequence { 
Target ManualDump 
Camera xxxx 
Timestamp "20170623133425" 
ID NULL 
FrameSize.x 512 
FrameSize.y 512 
Frames 
[ { 
SequenceNumber 0 
frameStart "23/06/2017 13:32:29.707459" 
Stars 
[ 
] } { 
SequenceNumber 1 
frameStart "23/06/2017 13:32:34.767027" 
Stars 
[ { 
Catalog "YYYYY" 
Index 13016559 
Name NULL 
} { 
Catalog "YYYYY" 
Index 13016572 
Name NULL 
} 
] } { 
SequenceNumber 2 
frameStart "23/06/2017 13:32:39.826595" 
Stars 
[ { 
Catalog "YYYYY" 
Index 13016559 
Name NULL 
} { 
Catalog "YYYYY" 
Index 13016572 
Name NULL 
} 
] } 
] } 

我有序列,框架,星光等的定义,例如一个框架是:

Frame 
{ 
    SequenceNumber INTEGER 
    FrameStart STRING            
    FrameStop STRING            
    FieldDerotationDegrees FLOAT         
    BoresightDegrees STRUCTURE TelescopeCoord      
    BoresightSkyPos STRUCTURE SkyCoord       
    Stars ARRAY STRUCTURE Star         
    BoresightCoord STRUCTURE PixelCoord       
} 

我已经削减了部分细节,以适应,但我不认为我被删除了任何重要的东西。

我大概可以修补一个已经写过的解析器来解析这个文件,但我想知道是否有人可以推荐一个看起来适用于这个工作的包/工具。

谢谢。

+1

一个自然的候选,​​这不是在一个共同的格式,我怀疑你将不得不推出自己的。你可以尝试将它转换为JSON或类似的东西,但这可能至少是同样多的工作。 – TemporalWolf

+0

您可以要求第三方以通用格式(如JSON或YAML)提供数据吗? –

+0

我认为,既然你有定义,使用'json.loads()'将是最好的。然后将生成的字典作为kwargs传递给'__init__'并相应地构建实例。 – nutmeg64

回答

相关问题