Voa慢速英语
Voa慢速英语想必都知道,最近发现一个网站(http://www.kekenet.com/),其中有voa慢速英语的音频。
本着天天向上的精神,打开一个页面后(http://www.kekenet.com/broadcast/201212/217548.shtml),发现有中英文双语的文章及清晰的英语音频。于是,准备将中英文文章拷贝下来,留作以后学习。但是,该网站进行了知识产权的防护编程,不能够复制粘贴。这难不倒一个bs程序员。
于是,选中一段英文(中文),右键点击查看元素,迅速的找到了网页源码。选中后复制粘贴就将文章取了出来。(也可以查看源代码,那样的话会带入更少的html代码。此处主要讲解Python编程故此做。
粘贴后文章如下:
<span class="hcdict" word="From">From</span>
<span class="hcdict" word="VOA">VOA</span>
<span class="hcdict" word="Learning">Learning</span>
<span class="hcdict" word="English">English</span>
,
<span class="hcdict" word="this">this</span>
<span class="hcdict" word="is">is</span>
<span class="hcdict" word="the">the</span>
<span class="hcdict" word="Economics">Economics</span>
<span class="hcdict" word="Report">Report</span>
<span class="hcdict" word="in">in</span>
<span class="hcdict" word="Special">Special</span>
<span class="hcdict" word="English">English</span>
.
<br>
<br>
<span class="hcdict" word="The">The</span>
<span class="hcdict" word="American">American</span>
<span class="hcdict" word="economy">economy</span>
<span class="hcdict" word="is">is</span>
<span class="hcdict" word="improving">improving</span>
,
<span class="hcdict" word="but">but</span>
<span class="hcdict" word="the">the</span>
<span class="hcdict" word="rate">rate</span>
<span class="hcdict" word="of">of</span>
<span class="hcdict" word="growth">growth</span>
<span class="hcdict" word="remains">remains</span>
<span class="hcdict" word="low">low</span>
.
<span class="hcdict" word="America's">America's</span>
<span class="hcdict" word="jobless">jobless</span>
<span class="hcdict" word="rate">rate</span>
<span class="hcdict highlight" word="fell">fell</span>
<span class="hcdict" word="in">in</span>
2012
……
.
这下,文章是拷贝出来了,但是有太多的html代码。如何办呢?想到用Python中的正则表达式编程。
正则表达式函数
首先,需要用到正则表达式中的查找替换函数Sub,此处对该函数进行了包装。
def StringRegexReplace(pattern,repl,string):
import re
return re.sub(pattern,repl,string,count=2,flags=re.I)
文件过滤
将拷贝出来的文章放进txt文件中。然后可以逐行读取,再进行正则替换后,逐行写入即可。
#!/usr/bin/env python
import os
def StringRegexReplace(pattern,repl,string):
import re
return re.sub(pattern,repl,string,count=2,flags=re.I)
#读取所有行
filename=raw_input('enter file name:')
f=open(filename,'r')
allLines=f.readlines()
f.close();
#以写方式打开,逐行写入
f=open(filename,"w");
for eachLine in allLines:
#正则替换
eachLine=StringRegexReplace("\n"," ",StringRegexReplace("<.+>","",StringRegexReplace("</\w+>","",eachLine)));
#写入
f.write("%s"%eachLine);
#不要忘记关闭文件
f.close();
运行后,输入文件名,该程序就把txt文件进行了处理。处理后的文件内容如下:
From VOA Learning English , this is the Economics Report in Special English . The American economy is improving , but the rate of growth remains low .
America's jobless rate fell in 2012 to its lowest level in four years .
不足之处
程序未进行异常处理等,实际是一个漏洞严重的程序,此处只做示例学习。
写在后面的
虽然此次示例较简单,也算第一次用Python解决实际问题。算一个小的进步吧。