用Python解析文本文件?

1 投票
2 回答
21842 浏览
提问于 2025-04-15 15:16

我有一个作业,需要处理一个.txt文件,里面的内容大概是这样的:
p
没有人真正喜欢痛苦,没人会主动去追求痛苦,只是因为它是痛苦……

h1
这是这个文本文件的另一个例子。

我需要写一段Python代码,来解析这个文本文件,并创建一个xhtml文件。
我对Python很陌生,也不太了解这些东西,所以我需要一个项目的起点。
这段Python代码应该能把文本文件里的每一个“标签”提取出来,然后放到xhtml文件里。我希望我说的这些你能理解。
任何帮助都非常感谢!
提前谢谢你!
-bojan

2 个回答

1

与其直接把你提到的文本文件转换成XHTML文件,我会先把它转成一个中间的内存表示。

所以我会创建一些类来表示

标签,然后遍历文本文件,构建这些对象并把它们放到一个列表里(或者更复杂的对象,但看你文件的样子,列表就够用了)。接着,我会把这个列表传给另一个函数,这个函数会循环处理

对象,并把它们输出为XHTML格式。

作为额外的好处,我会让每个标签对象(比如ParagraphHeading1类)实现一个as_xhtml()的方法,把实际的格式化工作交给这个方法。然后XHTML输出的循环可能会像这样:

for tag in input_tags:
    xhtml_file.write(tag.as_xhtml())

10

你说你对Python非常陌生,那我就从最基础的开始讲起。在Python中,你可以很简单地遍历文件中的每一行。

fyle = open("contents.txt")
for lyne in fyle :
    # Do string processing here
fyle.close()

接下来是如何解析这些内容。如果每个格式指令(比如p、h1)都在单独的一行上,你可以很容易地检查这一点。我会建立一个处理器的字典,然后这样获取处理器:

handlers= {"p": # p tag handler
           "h1": # h1 tag handler
          }

# ... in the loop
    if lyne.rstrip() in handlers :  # strip to remove trailing whitespace
        # close current handler?
        # start new handler?
    else :
        # pass string to current handler

你可以按照Daniel Pryden的建议,先创建一个内存中的数据结构,然后再把它转成XHTML。在这种情况下,处理器会知道如何构建与每个标签对应的对象。不过我觉得更简单的解决方案是,特别是当你时间不多的时候,直接生成XHTML,同时保持一个当前封闭标签的栈。在这种情况下,你的“处理器”可能只是一些简单的逻辑,用来把标签写入输出文件或字符串中。

在不知道你具体问题的情况下,我不能说更多。而且,我也不想替你做所有的作业。这些内容应该能给你一个好的开始。

撰写回答