用Python解析文本文件?
我有一个作业,需要处理一个.txt文件,里面的内容大概是这样的:
p
没有人真正喜欢痛苦,没人会主动去追求痛苦,只是因为它是痛苦……
h1
这是这个文本文件的另一个例子。
我需要写一段Python代码,来解析这个文本文件,并创建一个xhtml文件。
我对Python很陌生,也不太了解这些东西,所以我需要一个项目的起点。
这段Python代码应该能把文本文件里的每一个“标签”提取出来,然后放到xhtml文件里。我希望我说的这些你能理解。
任何帮助都非常感谢!
提前谢谢你!
-bojan
2 个回答
1
与其直接把你提到的文本文件转换成XHTML文件,我会先把它转成一个中间的内存表示。
所以我会创建一些类来表示
和
标签,然后遍历文本文件,构建这些对象并把它们放到一个列表里(或者更复杂的对象,但看你文件的样子,列表就够用了)。接着,我会把这个列表传给另一个函数,这个函数会循环处理
和
对象,并把它们输出为XHTML格式。
作为额外的好处,我会让每个标签对象(比如Paragraph
和Heading1
类)实现一个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,同时保持一个当前封闭标签的栈。在这种情况下,你的“处理器”可能只是一些简单的逻辑,用来把标签写入输出文件或字符串中。
在不知道你具体问题的情况下,我不能说更多。而且,我也不想替你做所有的作业。这些内容应该能给你一个好的开始。