Конвертируйте индивидуально отформатированный файл.txt в XML
У меня есть несколько больших текстовых файлов, которые являются "глоссариями" для личного использования во время моей докторской диссертации. Они бесполезно отформатированы так:
%%% <entry i>
Blah Blah Blah, see also > <entry j>
%%% <entry i+1>
и т.д. (обратите внимание на перекрестную ссылку.)
В своем нынешнем состоянии эти файлы не могут быть легко использованы (например, для создания отображаемых версий с LaTeX или для размещения подмножества записей на веб-сайте); по сути, их можно просматривать только в текстовом редакторе. Кажется, что преобразование всего в XML может быть лучшим способом повысить гибкость и удобство использования, так что как лучше это сделать?
1 ответ
Это может быть основой такого конвертера в 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) и записывает стандартный вывод. Просто оберните вывод между головой XML и хвостом. Если записи содержат пробелы, об этом следует позаботиться. Также, если блоки содержат тегоподобные ("") подстроки, необходимо дополнительное преобразование.
Однако, если вы хотите просто просмотреть записи, я предлагаю использовать простой HTML. Списки определений или таблицы будут вам полезны. Код преобразования потребует только небольших изменений.