还是挺喜欢python的,所以呢,又开始写PYTHON CHALLENGE了,毕竟写了很久的C语言,PYTHON的很多特性都不习惯,有心练一下吧,查了下,zoj支持python,可是单是输入数据就有得处理了……
为了把PYTHON写好,还是要加油啊。
题目页面:http://www.pythonchallenge.com/pc/def/ocr.html
今天在打开时,还出了点小问题,只好用GOAGENT翻墙了,等这么多,多不好。
过去也做过这题了,只是当时把find rare characters in the mess below:这句话后面的那大堆文本复制下来,花了太多时间,应该CTRL + A的……以前怎么写的,有点忘了。
起初,不打算复制,最好是直接用网络的库函数,把源代码直接搞下来,所以:
import urllib2
>>> print urllib2.urlopen("http://www.baidu.com").read()
结果呢,baidu.com是成功抓取了,于是我再接再厉。
print urllib2.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html").read()
半分钟后,我承认,死了……就是不知道是没翻墙呢?还是什么原因……反正,我伤心了。
那只能自己动手,丰衣足食,从浏览器上把代码COPY到文件上,然后,开始了:
__name__ == '__main__':
outfile = open("F:\\ocr.htm", "r")
text = outfile.read()
flag = 'find rare characters in the mess below:'
start = text.find(flag) + len(flag)
end = text.find('-->', start + len('-->'))
objectText = text[start : end]
for letter in objectText:
if (letter >= 'a' and letter <= 'z') or (letter >= 'A' and letter <= 'Z'):
print letter
结果自然是正确的(代码不合理,因为,没有养成关文件流的习惯,还有,可以直接使用isalpha……),不过,想想也知道,这种做法再平常不过,自己还是深受C语言的影响,最装逼的做法当然是用正则表达式,何况,自己对正则表达式七窍通了六窍——一窍不通呢?
自己写是写不出来的了……就网上找到的代码:http://blog.sina.com.cn/s/blog_5e74b40e0100l7ty.html
import re
f = file("ocr.htm",“r”)
s = f.read()
check = re.compile([a-z]) # NameError: name 'a' is not defined
check1 = check.findall(s)
print check1f.close()
在论坛里,还有像:
import string >>> filter(lambda x: x in string.letters, text)
方法太多了!