原题|Left-recursivePEGgrammars作者|GuidovanRossum(Python之父)译者|豌豆花下猫(“Python猫”公众号作者)声明|本翻译是出于交流学习的目的,基于CCBY-NC-SA4.0授权协议。为便于阅读,内容略有改动。我曾几次提及左递归是一块绊脚石,是时候去解决它了。基本的问题在于:使用递归下降解析器时,左递归会因堆栈溢出而导致程序终止。【这是我的PEG系列的第5部分。其它文章参见这个目录】假设有如下的语法规则:ex
系统 2019-09-27 17:49:42 1883
文件基本语法file=open(‘文件名’,mode)编码encoding=‘utf8’读模式存在返回True,否则抛出异常FileNotFoundError写模式存在返回True,否则新建文件mode读r写w追加a二进制b读写+操作读取所有内容read()读取一行readline()读取所有行列表readlines()关闭文件close()自动关闭withopen(目标文件)asf:存取Python对象pickle写对象dump(对象,目标文件)读对象l
系统 2019-09-27 17:49:39 1883
下面通过几个案例来分析一下,注意:本节的parsematch函数请参考《妙用re.sub分析正则表达式解析匹配过程》案例一:>>>re.findall(r".*.*(.*)",'第二回悟彻菩提真妙理断魔归本合元神')['断魔归本合元神']>>>parsematch(r".*.*(.*)",'第二回悟彻菩提真妙理断魔归本合元神')第1次匹配,匹配情况:匹配子串group(0):第二回悟彻菩提真妙理断魔归本合元神,位置为:(0,19)匹配子串group(1):
系统 2019-09-27 17:48:48 1883
看过这篇《2000字谏言,给那些想学Python的人,建议收藏后细看!》的读者应该都对一个命令有点印象吧?没错,就是linux中经常会用到的ls命令。文章中我就提到如何提升自己的python能力呢?直接找项目写,但是作为零基础/小白/入门的你来说做一个博客还要学web框架、html、css、js,又成为了阻碍你写实际项目的阻碍。所以我就推荐了这个命令:ls。写一个ls非常简单,你只需要会一点linux的基础知识,知道ls能做什么就好了。那今天就给大家码了一
系统 2019-09-27 17:48:24 1883
创建Deque序列:fromcollectionsimportdequed=deque()Deque提供了类似list的操作方法:d=deque()d.append('1')d.append('2')d.append('3')len(d)d[0]d[-1]输出结果:3'1''3'两端都使用pop:d=deque('12345')len(d)d.popleft()d.pop()d输出结果:5'1''5'deque(['2','3','4'])我们还可以限制d
系统 2019-09-27 17:47:59 1883
当年学爬虫的第一个想法就是想把双色球的数据爬下来,然后看能不能用什么牛叉的算法,或者数据分析把后面的双色球概率算出来;知道现在才抽空写了这几行代码爬取了双色球的数据,我也真是够懒的;也算是闲来无事,练手的爬虫吧;好了,多余的就不说了,直接上代码吧,代码注释已经很清楚了;importsysimportrequestsfromlxmlimportetreedefget_url(url):#请求url的方法,返回htmlheaders={'User-Agent'
系统 2019-09-27 17:47:57 1883
__init__方法是什么?使用Python写过面向对象的代码的同学,可能对__init__方法已经非常熟悉了,__init__方法通常用在初始化一个类实例的时候。例如:#-*-coding:utf-8-*-classPerson(object):"""SillyPerson"""def__init__(self,name,age):self.name=nameself.age=agedef__str__(self):return''%(self.name
系统 2019-09-27 17:47:53 1883
importosimportsysimportstring#以指定模式打开指定文件,获取文件句柄defgetFileIns(filePath,model):print("打开文件")print(filePath)print(model)returnopen(filePath,model)#获取需要处理的文件defgetProcFile(path):returnos.listdir(path)#判断是否满足某个条件,如果满足则执行defisTrue(outF
系统 2019-09-27 17:47:04 1883
在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor)。一、迭代器(iterator)在Python中,for循环可以用于Python中的任何类型,包括列表、元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。任何这类的对象
系统 2019-09-27 17:38:45 1883
Python列表List(列表)是Python中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。列表用[]标识。是python最通用的复合数据类型。看这段代码就明白。列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。加号(+)是列表连接运算符,星号(*)是重复操作。如下实例:#!/usr/
系统 2019-09-27 17:38:44 1883