python基础教程笔记—即时标记(详解)

最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目。因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习python的我帮助有限。

  下面是自己学习过程整理的一些内容。

  

基础版:

  基础教程上面的项目例子,都会先出一个基础的代码版本,然后根据第一个版本,进行相应的补充完善。我们先来看一下util.py这个文件。

 1 #encoding:utf-8
 2 #生成器,for循环时会依次返回每一行,它只在文件的最后追加了一个空行\n
 3 def lines(file):
 4     for line in file:yield line
 5     yield '\n'
 6 #生成器,for循环时会依次返回文本块组成的函数
 7 def blocks(file):
 8     block = []
 9     for line in lines(file):
10         if line.strip():
11             block.append(line)
12         elif block:
13             yield ''.join(block).strip()
14             block = []

这里的两个主要内容是生成器和for...in语法。

首先我们来看lines()方法,参数是文件,然后对文件进行循环,每次读取一行文件,主意这离的yield关键字,这里代表方法是一个生成器,循环的时候到yield我们可以理解成返回一次line内容。文本读完后,yield处是一个'\n'。

blocks()方法就使用了上面的生成器,每次循环取出内容后,对line内容进行判断,如果有值,去除两边空格,添加到列表中,否则将block列表生成字符串。我们可以看出blocks也是一个生成器,他的实际功能是,从文件中,依次读取出来一个文本块。

  然后是simple_markup.py文件。

 1 import sys,re
 2 from util import *
 3 
 4 print '<html><head><title>hello</title></head><body>'
 5 
 6 title = True
 7 for block in blocks(sys.stdin):
 8     block = re.sub(r'\*(.+?)\*',r'<em>\1</em>',block)
 9     if title:
10         print '<h1>'
11         print block
12         print '</h1>'
13         title = False
14     else:
15         print '<p>'
16         print block
17         print '</p>'
18 print '</body></html>'
这里我们需要注意一下,re.sub(r'\*(.+?)\*',r'<em>\1</em>',block),他是re模块的应用,首先增则匹配到内容,然后替换式替换。
其他部分,就是判断title是否为True,若是则给h1标签,否则给p标签。

扩展版:
  在上面的文件中,功能
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值