解析特殊标记的文本文件

2024-09-26 22:53:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用Python解析一个DSL文件。DSL文件是一个文本文件,其中的文本具有特殊的标记,标记由ABBYY Lingvo使用。在

它看起来像:

activate
    [m0][b]ac·ti·vate[/b] {{id=000000367}} [c rosybrown]\[[/c][c darkslategray][b]activate[/b][/c] [c darkslategray][b]activates[/b][/c] [c darkslategray][b]activated[/b][/c] [c darkslategray][b]activating[/b][/c][c rosybrown]\][/c] [p]BrE[/p] [c darkgray] [/c][c darkcyan]\[ˈæktɪveɪt\][/c] [s]z_activate__gb_1.wav[/s] [p]NAmE[/p] [c darkgray] [/c][c darkcyan]\[ˈæktɪveɪt\][/c] [s]z_activate__us_1.wav[/s] [c orange] verb[/c] [c darkgray] [/c][b]{{cf}}\~ sth{{/cf}} [/b]
    [m1]{{d}}to make sth such as a device or chemical process start working{{/d}}
    [m2][ex][*]• [/*][/ex][ex][*]{{x}}The burglar alarm is activated by movement.{{/x}} [/*][/ex]
    [m2][ex][*]• [/*][/ex][c darkgray] [/c][ex][*]{{x}}The gene is activated by a specific protein.{{/x}} [/*][/ex]
    {{Derived Word}}[m3][c darkslategray][u]Derived Word:[/u][/c] ↑<<activation>>{{/Derived Word}}
    {{side_verb_forms}}[m3][c darkslategray][u]Verb forms:[/u][/c] [s]x_verb_forms_activate.jpg[/s]{{/side_verb_forms}}

现在我看到了使用regexps解析此文件的唯一选项。但我怀疑是否可以实现,因为这种格式的标记具有某种层次结构,其中一些标记位于其他标记内部。在

我不能使用特殊的xmlhtml解析器。{{cd3}是为创建cd3}树结构而设计的。在

解析这种格式的文件的最佳方法是什么?有没有什么Python库可以实现这个目的?在


Tags: 文件标记formsdslexwordactivateverb
2条回答
^{bq}$

http://www.dabeaz.com/ply/

您可以快速而轻松地将语法定义为一组词汇规则和一些语法生成。在

如果你不喜欢这个,这里有一个备选方案。在

http://wiki.python.org/moin/LanguageParsing

将RegExp用于除琐碎用途之外的其他用途会带来心痛和痛苦。在

如果您坚持使用RegEx(不推荐),请查看在XML上使用的HERE方法

如果你所说的“.dsl”指的是ABBRY或Lingvo dict格式,那么您可能想看看stardict.它可以读取ABBRY dsl格式。在

相关问题 更多 >

    热门问题