随笔分类 - python
初学python里的yield send next
摘要:今天看书的时候突然看到这个想起来一直没有怎么使用过send和next试了一下发现了一个诡异的问题import mathdef get_primes(start): while 1 : if is_prime(start) : start = yield st...
阅读全文
尽信书不如无书
摘要:最近在看dive into python,看到介绍了另外一种字典类UserDict,挖好玩,试试看。请鄙视我这个不读书星人,之前都是用到什么stackoverflow上搜什么……开始使用到代码里去。发现在某个地方报了个错for i in a:blablablaKeyError: 0虽然遍历的方式可以...
阅读全文
haskell中的cps
摘要:cps全称叫continuation passing style,简要来讲就是告诉函数下一步做什么的递归方式,由于普通递归有栈溢出的问题,而cps都是尾递归(tail recursion),尾递归则是没有栈溢出问题的,所以haskell推荐都用cps的方式去编写代码。当然,相对于普通递归方式,cps也有着非常不便于理解的问题。def fact(n): if (n==0): return 1 else: return n* fact(n-1)print fact(400)这是一段递归求阶乘的python代码。用cps改写就是def fact_cps(n,r...
阅读全文
google云的数据库
摘要:最近改一个小程序,需要用到google云上的数据库功能。学习了一点相关知识。对于应用来说,首先要app.yaml申明自己application: aversion: 1runtime: pythonapi_version: 1handlers:- url:/xx script: xx.py- url:/yy script: xx.py- url:/zz.py script: zz.py第一部分四行比较简单,handlers这里是告诉云,访问连接后跟的路径用哪一个脚本去处理,比如在这里,application叫做a,那么访问a.appspot.com/xx,是用xx.py处理,如果访问a....
阅读全文
sina微博的动态载入
摘要:最近写的爬虫就是为了抓取sina微薄的内容,结果发现11月份以后微薄改版了,改版之后一页并不是一次性现实的,而是分三次显示。第一次访问获取的内容只有1/3,其余的内容分两次,通过新浪自己的STK库中的lazy_load来完成动态加载的。本来以为很难解决,抓了一下包以后发现其实挺简单。body={'__rnd':访问这一页面的时间,以秒表示的13位整数'_k':本次登录第一次访问此微薄的时间,16位整数'_t':0'count':第二次和第二次访问时都是15,第一次访问时是50'end_id':最新的这一项微博的mi
阅读全文
html内嵌javascript中unicode的处理
摘要:接着上一篇爬虫处理,发现内嵌javascript里使用的中文字符是以unicode编码\uxxxx形式出现。fnick=\u5200\u5200\u72d7\u7ae5\u8bdd\u96c6\">\n但python用正则表达式读取的时候是把这些\uxxxx当作ascii码来处理,于是为了转义,在每个字符前又加了反斜杠,成为\\uxxx。a='\\u5200\\u5200\\u72d7\\u7ae5\\u8bdd\\u96c6'所以问题就是怎么把这个字符改成python能正常辨认的字符串str类型。python中相关对象分str和unicode,可以用type命
阅读全文
python中dict类的显式和隐式产生
摘要:python中有两种方法创建dict类显式foo.update(dict(a= 1, b='2'})隐式foo.update({'a': 1, 'b': '2'})最近在写一个爬虫的时候碰到一个问题,dict的key是系统的保留字from于是在stackoverflow上找到了答案。对于这类情况,只能使用隐式方法创建dict类如foo.update({'from':1,'d':2})显式方法只能适用于key为普通字符串的情况,任何包含标点,空格,unicode代码的key都必须用隐式方法产成dict
阅读全文