Python基础教程——把文本转为HTML格式
来源:互联网 发布:淘宝polo衫 编辑:程序博客网 时间:2024/06/05 08:39
功能:将文本文件转换成html格式的文档。
方法:
1.添加初始标签
2.智能分段
#util.pydef lines(file):#遍历文本文件,用生成器保存每行 for line in file:yield line #此时获取到第一行的值后,会暂停,返回到被调用的地方,即blocks函数语句中#在文件最后添加空行 yield '\n' def blocks(file): block=[]#lines函数返回的yield存储值,拿来每行遍历,根据是否有空行找出段落 for line in lines(file):#判断是否为字符串,字符串才有split()方法,如果有,追加到block里,开始回到lines中进入到下一次循环, if line.strip(): block.append(line)#如果不是字符串,那么将block里的内容去空格并追加到空字符串''后,然后清空block,避免重复内容 elif block: yield ''.join(block).strip() block=[]
#simple_markup.pyimport sys,refrom util import * print '...'title=True for block in blocks(sys.stdin):block=re.sub(r'\*(.+?)\*',r'<em>\1</em>',block) if title: print '<h1>' print block print '</h1>' title=False else: print '<p>' print block print '</p>'print ''
数据流是这样的:
python simple_markup.py f1output.html
回车运行,首先打印初始标签,然后进入for循环,调用到util.py里面的blocks函数,blocks函数中的循环调用到lines函数,生成一个新的文本文件(其实就是最后面加了一个空行),然而在用到yield生成器的过程中非常有意思:
首先在lines里面遍历原始文件的每行,每遍历一行后,会暂停并将值返回给blocks函数,blocks收到后进入if判断,是字符串,则追加到空列表中。否则将其字符串化”.join(block).strip()
第一次循环之后,程序回到lines函数暂停的地方,就是util.py第4行,继续遍历原始文件,从第二行开始。当遇到空行,返回值将是空,那就会进入到elif判断中,将blocks列表里的内容字符串化,并回到simple_markup.py中去。
进入simple_markup.py的循环中之后,如果原始文件还没读完,会再回去进行下一次循环,直到全部完成,最后一次循环是:yield \n添加空行返回给blocks,由于为空,进入elif,将内容结算后,清空再次循环,再次进入到elif 判定为false不再继续,程序结束。
涉及的知识点:
1.sys.stdin
2.生成器yield
3.正则表达式的过滤
sys.stdin 标准输入,手册里没多讲,在使用使用时作为参数运行,python simple_markup.pyfilename2,读filename1的内容写入,输出到filename2中
生成器参考这篇,写的太好了!
正则表达式,这里用到的re.sub(r’”(.*?)”‘,r’\1‘,block)
代表将block的内容里面“”之内的内容转换为加上标签的形式。\1(数字1)代表反向引用,稍后详解。
值返回给simple_markup.py中的循环判断,第一行的值作为首行
其余的为段落,最后打印结尾标签。
转载地址:陆
- Python基础教程——把文本转为HTML格式
- Delphi把HTML转换成纯文本格式
- 把STL转为ACT格式
- 关于textarea文本转为html
- HTML新人基础学习1.7—预格式文本
- Python 把矩阵转为list
- Java把Html格式文本转换成纯文本的问题
- HTML——基础教程 w3cschool
- Python 正则表达式将纯文本转化为HTML格式
- HTML(格式,文本标签)
- HTML文本格式
- HTML(格式,文本标签)
- java如何把时间格式转为毫秒
- openssl把p12证书转为pem格式
- dfm格式转换: 将二进制格式转为文本格式
- java将字串转为html格式
- php 实现html转为rtf格式
- 将dos格式换行文本转为Unix格式
- Gas Station [leetcode] 的两种解法
- CSS层叠样式表
- JUnit4.8.2源代码分析-3 TestClass 和RunnerBuilder
- 赘宗准准住纵鬃滋资总钻滓兹资姿邹座赘
- 昨族注锥锥桩柞兹谞篆浊罪缀揍滓转住仔
- Python基础教程——把文本转为HTML格式
- live555
- 缀姿拽撞祖专妆坠渍嘴邹族桌拽渍姿壮祖
- 庄妆宗篆租棕壮专妆踪缀钻兹纂砖灼族纵
- 九度oj-1179-阶乘
- json 数据写入mysql 数据库的方法
- 拽撞转佐孜棕作桌棕咨状紫子仔孜茁爪座
- Android 手势检测实战 打造支持缩放平移的图片预览效果(上)
- 设计模式-单例模式