即时标记简单解决
来源:互联网 发布:ubuntu文字识别软件 编辑:程序博客网 时间:2024/05/16 02:57
问题描述:
问题来源与《Python基础教程》第二十个章节
假设你从一个不想写HTML代码的人那里得到了一个文件,希望将它作为一个网页来使用,你本身也不想自己手的那个的为文档添加所需要的全部标签,而是想要让程序自动完成。程序所要做的工作就是就是将各种文本元素分类,比如标题和被强调的文本,然后明确的标记他们。
完成的目标:
输入不应该包含人工代码或者标签。
程序能够处理不同的块(block),比如标题、段落、列表项、内嵌文本(比如被强调的文本和URL)
如果处理的不仅仅HTML,能够扩展到其他的标记语言就更好了。
初次实现
首先要做的是把文本切成段落,在测试文档中,段落与段落之间用空格格开了。所以找到一个段落的简单方法就是收集遇到的所有的行,直到遇到一个空行,然后返回已经收集的行。那些返回的行就是一个段落。之后,在开始收集,不需要收集空行,也不要返回空段落(在遇到多个空行时)。同时,要群豹文件的最后一行是空行,否则,程序就不知道什么时候结束。
文本生成器,代码如下(util.py)
def lines(file): for line in file: yield line yield '\n' def blocks(file): block = [] for line in lines(file): if line.strip(): block.append(line) elif block: yield ''.join(block).strip() block = []
实现简单的标记:
打印一些开始标记;
打印每个用段落标签括起来的块;
点一些结束标记;
对于第一个段落,用(h1)括起来,区分标题与段落,代码(simple_makeup.py)实现如下:
import sys, refrom util import *print('<html><head><title>...</title><body>') title = Truefor block in blocks(open(r'D:\Python27\test_input.txt')): 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('</body></html>')
实现结果简单的区分了标题和段落:
0 0
- 即时标记简单解决
- 即时标记_再次解决
- “即时标记”
- python基础教程:即时标记
- python实现即时标记
- python即时标记
- Python项目一:即时标记
- Python项目之即时标记
- python项目练习一:即时标记
- python即时标记小知识点总结
- python十个项目之----即时标记
- python项目练习一:即时标记
- Python-学习-项目1-即时标记-1
- python项目练习一:即时标记
- 即时通信的简单实现
- android简单即时聊天sdk
- 【Python】读书笔记:Python基础教程-项目1-即时标记
- Python基础_即时标记及其相关的语法
- iBatis--iBatis 是什么?
- iOS抓包全记录
- IOS学习笔记37——ViewController生命周期详解
- 基數排序法
- struts2拦截器实现拦截不文明字迹
- 即时标记简单解决
- STL系列之四 heap 堆
- oracle数据库的存储过程
- 模块之间 同步报文校验
- How to cleanup ASM installation (RAC and Non-RAC)
- 强大的grep用法详解:grep与正则表达式
- 早春寒暖温差大 当心冻疮再发
- java 排序与二分法查找代码
- sql语句中left join中的on与where的区别