python——有限状态机
2024-08-30 10:35:35
前言
使用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;
最新文章
- 关于php的mysqlnd驱动
- WorldWind源码剖析系列:BMNG类构造函数深入分析
- Windows Management Instrumentation WMI Security Technology Learning
- java笔试二
- 开发Android 范的错误
- 4.给定一个正整数m,统计m的位数,分别打印每一位数字,再按照逆序打印出各位数字。 要求:m定义为类的属性,需定义构造函数为m赋值;当m大于99999时,输出错误信息“the number is too large”,不再执行。
- python之poplib库
- 关于Androdi中SQLITE 3采用GBK编码存储,数据库中文乱码问题。
- js监听鼠标滚动
- COJ 0015 20602铁轨
- Java 9 揭秘(10. 模块API)
- JS事件练习题
- bootstrap开发微票儿网站首页
- asynicio模块以及爬虫应用asynicio模块(高性能爬虫)
- C#-----中使用using详解
- 爬虫----requests模块
- Linux基础命令---paste
- Python 自动爬取B站视频
- 【Java虚拟机】运行时数据区
- ScriptX使用
热门文章
- ssh-keygen不是内部或外部命令
- BAT command
- 深入理解Spring Redis的使用 (一)、Spring Redis基本使用
- 深入理解Java:注解(Annotation)--注解处理器
- linux 打造man中文帮助手册
- virtualbox 中的linux 共享文件 发生文件系统类型错误的解决办法
- 利用afxDump来调试自己的程序
- EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考
- Ajax中的get和post两种请求方式的异同
- [译]AngularJS Service vs Factory - Once and for all