Converter arquivo .txt idiossincraticamente formatado para XML

0

Eu tenho vários arquivos grandes de texto simples que são 'glossários' para uso pessoal feitos durante meu PhD. Eles são formatados de maneira inútil da seguinte forma:

%%% <entry i>

    Blah Blah Blah, see also > <entry j>


%%% <entry i+1>

(Observe a referência cruzada.)

No estado atual, esses arquivos não podem ser facilmente usados (por exemplo, para criar versões de exibição com LaTeX ou para colocar um subconjunto de entradas em um site); eles podem essencialmente ser navegados em um editor de texto. Parece que converter tudo em XML pode ser a melhor maneira de aumentar a flexibilidade e a usabilidade, então qual é a melhor maneira de fazer isso?

    
por legatrix 02.04.2016 / 09:44

1 resposta

0

Esta pode ser a base de tal conversor em python:

#!/usr/bin/python

import fileinput
import re

entryre = re.compile( "^%%% <([^>]+)>")
seealsore = re.compile( "see also > <([^>]+)>")

def pnode(nodename, nodeblock):
    print "<" + nodename + ">"
    print nodeblock
    print "</" + nodename + ">"


block = ""
entry = ""
for line in fileinput.input():
    match = re.match( entryre, line)
    if match:
        if entry:
            pnode(entry, block)
            block = ""
            entry = ""
        entry = match.group(1)
    else:
        match = re.match( seealsore, line)
        line = re.sub( seealsore, r'<seealso></seealso>', line)
        block += line

pnode(entry, block)

Ele lê qualquer arquivo (stdin é sugerido) e grava stdout. Apenas envolva a saída entre uma cabeça xml e cauda. Se as entradas contiverem espaços em branco, isso deve ser feito com cuidado. Além disso, se os blocos contiverem substrings semelhantes a tags (""), será necessária uma conversão adicional.

No entanto, se você quiser apenas navegar pelas entradas, sugiro usar um simples html. Listas ou tabelas de definições serviriam muito bem a você. O código de conversão exigiria apenas pequenas alterações.

    
por 03.04.2016 / 13:38

Tags