有限状态机 python_python——有限状态机

前言

使用Python,大部分时间花在了处理文本上。在处理文本的时候,如果对有限状态机有所了解的话,处理起来会更加得心应手。可以把文本看成一个流,然后有一个机器对这个流进行操作。这个机器有状态,不同的状态会做出不同的处理,状态会随着处理进行变化。

例子

oracle数据库中有一个存储过程,该存储过程中有很多select语句,要把所有的select语句提取出来。

代码:

--存储过程代码

create or replace procedure demo()

is

begin

insert into table_1

select a1,a2,a3

from table_2;

insert into table_1

select a1,a2,a3

from table_3;

insert into table_1

select a1,a2,a3

from table_4;

commit;

exception

when others then

insert into table_log(error_msg)values(sqlerrm);

end;

#python代码

def parse(s):

l=[]

state=0 #状态

for i in s:

if state==0: #状态为0的处理

if 'select' in i:

l.append(i)

state=1 #状态改变

if ';' in i:

state=0

elif state==1: #状态为1的处理

l.append(i)

if ';' in i:

state=0 #状态改变

return l

结果:

select a1,a2,a3

from table_2;

select a1,a2,a3

from table_3;

select a1,a2,a3

from table_4;

收集了一些python的文章

来自: 戴铭 2010-08-31 17:52:31 newthreading - safer concurrency for Python 安全并发(1回应) http://www.starming ...

有限状态机(Python)

有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.FSM是一种算法思想,简单而言,有限状 ...

【AMAD】transitions -- 一个python实现的轻量级,面向对象的有限状态机

简介 个人评分 简介 Transitions1是使用python实现的有限状态机2. 而有限状态机是实现经典模式 -- 状态模式3的前提. 这个库的API相当优雅,简洁. 另外博客园有人发布博客4介绍 ...

Python语言的有限状态机实现样例

#!/usr/bin/env python3 class Connection(object): def __init__(self): self.change_state(ClosedConnect ...

[转]python 常用类库!

Python学习 On this page... (hide) 1. 基本安装 2. Python文档 2.1 推荐资源站点 2.2 其他参考资料 2.3 代码示例 3. 常用工具 3.1 Pytho ...

200行Python代码实现2048

200行Python代码实现2048 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面 ...

Python并行编程(十四):异步编程

1.基本概念 除了顺序执行和并行执行的模型以外,还有异步模型,这是事件驱动模型的基础.异步活动的执行模型可以只有一个单一的主控制流,能在单核心系统和多核心系统中运行. 在并发执行的异步模型中,许多任务 ...

Atitit. 有限状态机 fsm 状态模式

Atitit. 有限状态机 fsm 状态模式 1. 有限状态机 1 2. "状态表"和"状态轮换表" 1 3. 有限状态机概念(状态(State)事件(Even ...

Python入门 —— 2048实战(字符界面和图形界面)

2048 game (共4种实现方法) 目录: .. 图形界面 ... pygame 和 numpy .. 字符界面 ... 第一种 ... curses ... wxpython ... 第二种 . ...

随机推荐

(java)==和equals()的使用小结

1.如果两个变量说基本数据类型,且都是数值类型,eg.65f,65(不一定要求数据类型严格相同),只要两个变量的值相等,就将返回true int it=65; float fl=65.0f; char ...

Java构造函数的继承问题

◎构造函数的继承 1.子类只继承父类的默认(缺省)构造函数,即无形参构造函数.如果父类没有默认构造函数,那子类不能从父类继承到任何构造函数. 3.在创建对象时,先调用父类默认构造函数对对象进行初始化, ...

Java语言基础(二) Java关键字

Java语言基础(二) Java关键字 Java关键字比较多,我就不列举出来了,只记录一些常用的小知识点: ①Java的关键字只有小写. ②then.sizeof都不是Java的关键字,熟悉C++的程 ...

Mvc里查询商品页面

/// /// 商品小类筛选页面 GoodsTypeName ----------------SelectGoods--商品筛选 --图文 /// Home/Selec ...

Upgrading an ASP.NET MVC 2 Project to ASP.NET MVC 3 Tools Update

ASP.NET MVC 3 can be installed side by side with ASP.NET MVC 2 on the same computer, which gives you ...

Pandas 使用笔记

创建空的数据框: import pandas as pd df = pd.DataFrame(columns = ["ebayno", "p_sku", &qu ...

HoloLens开发手记 - HoloLens上的应用视图 App views on HoloLens

运行在HoloLens上的应用可能包含2种视图,分别是全息视图和2D视图.应用可以在全息视图和2D视图之间转换,这常被用于访问系统提供的接口,例如虚拟键盘.拥有至少一个全息视图的应用被归类为全息应用. ...

数据分析与挖掘 - R语言:贝叶斯分类算法(案例一)

一个简单的例子!环境:CentOS6.5Hadoop集群.Hive.R.RHive,具体安装及调试方法见博客内文档. 名词解释: 先验概率:由以往的数据分析得到的概率, 叫做先验概率. 后验概率:而在 ...

centos 虚拟环境 安装mezzanine cms

[root@hai envdj]# cd bin [root@hai bin]# activate -bash: activate: command not found [root@hai bin]# ...

你可能感兴趣的:(有限状态机,python)