终于把第一个项目啃的差不多了,对于一个初学者来说很有难度。
这个项目的目的是将文本转化为标记语言(例子中是HTML)。
基本的思路是这样的:
1.读取文本文件,利用生成器遍历文本,并将文本转化为处理的基本单位——块(block)
2.使用正则表达式过滤块中的强调语句、URL、email地址。添加相应的标签,如<em></em> <a></a>等。
3.根据语言特点制定一些规则,对块逐条匹配,添加相应的标签。如<p></p> <ul></ul>等。
相应的,实现的时候分成了几个模块:
markup.py:主模块,调用各个模块实现业务逻辑。
util.py:生成器,遍历文本,转化为块。
handlers.py:过滤块中的特殊语句。为rules指定的块添加标签,输出结果。
rules.py:判断markup指定的块的类型,调用handlers处理。
个人感觉比较难的地方:
1.模块的组织,类的设计
2.迭代器,生成器
3.正则表达式,re中相关函数的使用
4.自省