У меня есть несколько больших текстовых файлов, которые являются «глоссариями» для личного использования во время моей докторской диссертации. Они бесполезно отформатированы так:

%%% <entry i>

    Blah Blah Blah, see also > <entry j>


%%% <entry i+1>

так далее. (Обратите внимание на перекрестную ссылку.)

В своем нынешнем состоянии эти файлы не могут быть легко использованы (например, для создания отображаемых версий с LaTeX или для размещения подмножества записей на веб-сайте); По сути, их можно просматривать только в текстовом редакторе. Кажется, что преобразование всего в XML может быть лучшим способом повысить гибкость и удобство использования, так как лучше всего это сделать?

1 ответ1

0

Это может быть основой такого конвертера в 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>\1</seealso>', line)
        block += line

pnode(entry, block)

Он читает любой файл (рекомендуется stdin) и записывает stdout. Просто оберните вывод между головой XML и хвостом. Если записи содержат пробелы, об этом следует позаботиться. Также, если блоки содержат подстроки в виде тегов (""), необходимо дополнительное преобразование.

Однако, если вы хотите просто просмотреть записи, я предлагаю использовать простой HTML. Списки определений или таблицы будут вам полезны. Код преобразования потребует только небольших изменений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .