txt - guardar una lista en un archivo python
Analizar un archivo de texto con un marcado especial (2)
"algún motor que permite crear un árbol basándose en la estructura de etiquetas de anidación".
Mira http://www.dabeaz.com/ply/
Es posible que pueda definir la sintaxis rápida y fácilmente como un conjunto de reglas léxicas y algunas producciones gramaticales.
Si no te gusta, aquí hay una lista de alternativas.
Necesito analizar un archivo DSL
usando Python. Un archivo DSL es un archivo de texto con un texto que tiene un marcado especial con etiquetas utilizadas por ABBYY Lingvo .
Parece que:
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}}
Ahora veo la única opción para analizar este archivo usando regexps
. Pero dudo si se puede lograr ya que las etiquetas en ese formato tienen cierta jerarquía, donde algunas de ellas están dentro de otras.
No puedo usar analizadores especiales xml
y html
. Son perfectos para crear una estructura de árbol del documento, pero están diseñados para etiquetas especiales de html
y xml
.
¿Cuál es la mejor manera de analizar un archivo en ese formato? ¿Hay alguna biblioteca de Python para ese propósito?