将特殊格式的 .txt 文件转换为 XML

将特殊格式的 .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)并写入 stdout。只需将输出包装在 xml 头和尾之间即可。如果条目包含空格,则应小心处理。此外,如果块包含类似标签的子字符串(“”),则需要进行额外的转换。

但是,如果您只想浏览条目,我建议使用简单的 html。定义列表或表格都可以很好地满足您的需求。转换代码只需要进行少量更改。

相关内容