1. 算术运算表达式求值 在上一篇博文<Python技法:用re模块实现简易tokenizer>中,我们介绍了用正则表达式来匹配对应的模式,以实现简单的分词器.然而,正则表达式不是万能的,它本质上是一种有限状态机(finite state machine,FSM), 无法处理含有递归语法的文本,比如算术运算表达式. 要解析这类文本,需要另外一种特定的语法规则.我们这里介绍可以表示上下文无关文法(context free grammer)的语法规则巴科斯范式(BNF)和扩展巴科斯范式(EBNF)…
Python实现JSON生成器和递归下降解释器 github地址:https://github.com/EStormLynn/Python-JSON-Parser 目标 从零开始写一个JSON的解析器,特征如下: 符合标准的JSON解析器和生成器 手写递归下降的解释器(recursive descent parser) 使用Python语言(2.7) 解释器和生成器少于500行 使用cProfile完成性能分析和优化 实现内容 [x] 解析字面量(true false null) [x] 解析数…
目录 自顶向下分析方法 TINY文法 消左提左.构造first follow 基本思想 python构造源码 运行结果 参考来源:聊聊编译原理(二) - 语法分析 自顶向下分析方法 自顶向下分析方法:递归下降分析法,LL1分析法.其实本质上核心思想是一样的,也就是LL,从左至右,最左推导,因而我觉得其实可以把前一个称为LL0分析法,即不使用向前看符号,这也是他们的不同点,具体实现不同罢了,递归下降需要用回溯和分治,调用递归函数,因为递归调用,耗费时间当然要长一点,而LL1使用first和foll…
Atitit 表达式原理 语法分析 原理与实践 解析java的dsl  递归下降是现阶段主流的语法分析方法 于是我们可以把上面的语法改写成如下形式:1 合并前缀1 语法分析有自上而下和自下而上两种分析方法2 递归下降是现阶段主流的语法分析方法,2 于是我们可以把上面的语法改写成如下形式: 1)       Operator="+" | "-" | "*" | "/" 2)       Expression=<数字>…
Python算法:推导.递归和规约 注:本节中我给定下面三个重要词汇的中文翻译分别是:Induction(推导).Recursion(递归)和Reduction(规约) 本节主要介绍算法设计的三个核心知识:Induction(推导).Recursion(递归)和Reduction(规约),这是原书的重点和难点部分 正如标题所示,本节主要介绍下面三部分内容: • Reduction means transforming one problem to another. We normally red…
python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, dst) Copy data and mode bits ("cp src dst") # 复制数据和权限,相对于cp命令 The destination may be a directory. # 目标数据可以为目录 copy2(src, dst) Copy data and all s…
目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a.生成器相关python函数.装饰器.迭代器.生成器,我们是如何使用生成器的.一个生成器能暂停执行并返回一个中间的结果这就是 yield 语句的功能 : 返回一个中间值给调用者并暂停执行. 我们的调用方式为yeild 1的方式,此方式又称为生成器的语句形式. 而使用生成器的场景:使用生成器最好的场景就…
线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足,均值为0的高斯分布,即正态分布.这个假设是靠谱的,符合一般客观统计规律.若使 模型与测量数据最接近,那么其概率积就最大.概率积,就是概率密度函数的连续积,这样,就形成了一个最大似然函数估计.对最大似然函数估计进行推导,就得出了推导后结果: 平方和最小公式 注: 1.x的平方等于x的转置乘以x. 2…
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI(Web Server Gateway Interface)定义了Web服务器与Web应用(或Web框架)之间的标准接口.在WSGI的规范下,各种各样的Web服务器和Web框架都可以很好的交互. 由于WSGI的存在,用Python写一个简单的Web框架也变得非常容易.然而,同很多其他的强大软件一样,要…
Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: 1.首先这份文档看三两遍是不行的,很多东西再看一遍就通顺了.2.send_mail().send_mass_mail()都是对EmailMessage类使用方式的一个轻度封装,所以要关注底层的EmailMessage.3.异常处理防止邮件头注入.4.一定要弄懂Email backends 邮件发送后…
// 实验存档 截图: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link href="https://fonts.googleapis.com/css?family=Noto+Serif+SC" rel="stylesheet"> <style>…
python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速便捷地处理数据的函数和方法.你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一.2.Pandas 是python的一个数据分析包,最初由…
python之simplejson,Python版的简单. 快速. 可扩展 JSON 编码器/解码器 simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 Python 对象层次结构: import simplejson as json print json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) print json.dumps("\"foo\bar") print json…
用Python编写一个简单的Http Server Python内置了支持HTTP协议的模块,我们可以用来开发单机版功能较少的Web服务器.Python支持该功能的实现模块是BaseFTTPServer, 我们只需要在项目中引入就可以了: from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer 1 Hello world ! Let’s start with the first basic example. It just ret…
Python -- Scrapy 框架简单介绍 最近在学习python 爬虫,先后了解学习urllib.urllib2.requests等,后来发现爬虫也有很多框架,而推荐学习最多就是Scrapy框架了,所以这里我也小试牛刀一下. 开始自己的Scrapy 框架学习之路. 一.Scrapy安装介绍 参考网上资料,先进行安装 使用pip来安装Scrapy 在命令行窗口执行如下命令即可 pip install Scrapy 安装过程可能会因为环境等问题出现终止,此时可以查看命令行显示提示信息,根据提示…
C#调用Python脚本的简单示例 分类:Python (2311)  (0)  举报  收藏 IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Hugunin所发起,是一个开源的项目,基于微软的 DLR引擎.IronPython的在CodePlex上的主页:http://ironpython.codeplex.com/ 使用场景: 如果你的小伙伴会写Python脚本,而且已经实现大部分项目的功能不需要再用C# 实现.现在缺少窗体,此时Python+C#…
python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import pymongo class Mymongo(object): def __init__(self, host, port=27017): try: self.conn = pymongo.MongoClient(host=host, port=port) except Exception as e:…
python和redis简单交互 1.安装redis模块 pip3 install redis 2.redis模块简单使用: # /usr/bin/env python3 import redis class Myredis(object): def __init__(self, host, port=6379): try: self.conn = redis.StrictRedis(host=host, port=port) except Exception as e: print(e) el…
递归下降程序 递归下降程序一般是针对某一个文法的.而递归下降的预测分析是为每一个非终结符号写一个分析过程,由于文法本身是递归的,所以这些过程也是递归的. 以上是前提. Sample 假如给的是正规式子,首先要做的是将其改为文法表示: \((int | float) id(,id)^*\) 以上式子为例,将其改为文法表示 \(D --> TL\) \(T-->int | float\) \(L--> L,id | id\) 然后消除其左递归 \(D --> TL\) \(T-->…
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是test,也就是一个测试用例.要了解unittest单元测试框架,先来了解以下几个重要的概念. 1.测试固件(test fixture) 一个测试固件包括两部分,执行测试代码之前的准备部分和测试结束之后的清扫代码.这两部分一般用函数setUp()和tearDown()表示.这里举例以下,例如要测试百…
python+selenium之简单介绍继承 一.此例简单的介绍一下继承 1.面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法   class 派生类名(基类名)://...   基类名写作括号里,基本类是在类定义的时候,在元组之中指明的.这与c#是有区别的. 2.何时使用继承:假如我需要定义几个类,而类与类之间有一些公共的属性和方法,这时我就可以把相同的属性和方法作为基类的成员,而特殊的方…
使用python做最简单的爬虫 --之心 #第一种方法import urllib2 #将urllib2库引用进来response=urllib2.urlopen("http://www.baidu.com") #调用库中的方法,将请求回应封装到response对象中html=response.read() #调用response对象的read()方法,将回应字符串赋给hhtml变量print html #打印出来 #第二中方法import urllib2req=urllib2.Requ…
python练习_简单登录 需求: 做一个登录的小程序,验证用户与密码 要求登录三次错误后锁定 以下代码实现的功能与思路: 功能: 1.除admin以外的用户累计登录失败次数超过三次则锁定,此时需要管理员解锁.    2.当前IP地址登录失败五次则锁定IP地址一分钟后解锁.    3.admin管理员有以下管理功能 锁定用户.解锁用户.更改密码.添加用户.删除用户.    4.普通用户拥有更改密码的功能. 流程图: 思路: 1.用户信息通过ConfigParser模块进行处理并保存到文件 2.通…
在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互.随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行的接口就各种出错了. 这个接口系统刚刚开发不久,整个系统中,处于比较边缘的位置,不像其他项目,有日志库,还有短信告警,一旦出问题,很多情况下都是用户反馈回来,所以,我的想法是,拿起python,为这个项目写一个监控.如果在调用某个第三方接口的过程中,大量出错了,说明这个接口有有问题了,就可以更快的采…
前一阵子小编给大家连续分享了十篇关于Python正则表达式基础的文章,感兴趣的小伙伴可以点击链接进去查看.今天小编给大家分享的是Python正则表达式的简单应用和示例演示,将前面学习的Python正则表达式做一个概括. 下面的栗子是用于提取高考日期,一般来说,我们填写日期都会写2018年6月7日,但是也有很多人会写成2018/6/7.2018-6-7.2018-06-07等,还有的人可能会写为2018-06或者2018年6月.总之对日期的写法五花八门,那么我们现在需要写一个正则表达式来统一匹配这…
1. 文法 G(S): (1)S -> AB (2)A ->Da|ε (3)B -> cC (4)C -> aADC |ε (5)D -> b|ε 验证文法 G(S)是不是 LL(1)文法? 解: FIRST集: FIRST(Da)={b,a} FIRST(ε)={ε} FIRST(aADC)={a} FIRST(b)={b} FOLLOW集: FOLLOW(A)=FIRST(B)+FIRST(B)+FIRST(B)+FOLLOW(C)={c,a,b,#} FOLLOW(C)…
1. 文法 G(S): (1)S -> AB (2)A ->Da | ε (3)B -> cC (4)C -> aADC | ε (5)D -> b | ε 验证文法 G(S)是不是 LL(1)文法? FIRST集: FIRST(A) → { a,b } FIRST(Da) → { a,b } FIRST(ε)→{ ε } FIRST(cC)→{ a,c } FIRST(b)→{ b } FOLLOW集: FOLLOW(S)→{ # } FOLLOW(A)→{ a,b,c,#…
1. 文法 G(S): (1)S -> AB (2)A ->Da|ε (3)B -> cC (4)C -> aADC |ε (5)D -> b|ε 验证文法 G(S)是不是 LL(1)文法? 解:因为 First(Da)={b, a} First(ε)={ε} First(aADC)={a} First(b)={b} Follow(A)={c.b.a, #} FIRST(B) FIRST(D), FIRST(C), FOLLOW(C) Follow(C)={#} Follow…
1. 文法 G(S): (1)S -> AB (2)A ->Da|ε (3)B -> cC (4)C -> aADC |ε (5)D -> b|ε 验证文法 G(S)是不是 LL(1)文法? FIRST集: FIRST(A) = { b , a , ε} FIRST(C) = { a , ε} FIRST(D) = { b , ε} FOLLOW集: FOLLOW (A) = { c , b , a , ε} FOLLOW (C) = { # } FOLLOW (D) = {…
Python Django 实现简单注册功能 项目创建略,可参考前期文档介绍. 目录结构如下 编辑views.py from django.shortcuts import render # Create your views here. from django.http import HttpResponse from django.shortcuts import render from common.DBHandle import DataBaseHandle import time de…