应用场景:

有一个建表sql文件create_table.sql如下:

CREATE TABLE TABLE_1

(    F_KEY CHAR(8) NOT NULL ENABLE,    CONSTRAINT P_TRA_BASE_PRICE PRIMARY KEY (F_KEY));CREATE TABLE TABLE_2(    F_SEQ_NO NUMBER(10) NOT NULL ENABLE,    F_TITLE CHAR(40),    F_CONTENT CHAR(1024),    F_CREATE_TIMESTAMP TIMESTAMP,    F_UPDATE_TIMESTAMP TIMESTAMP,    CONSTRAINT P_TRA_BULLETIN_BOARD PRIMARY KEY ( F_SEQ_NO)

);

……

我想要把各个TABLE的表结构分开,然后再根据表名插入到一个dictionary里面,后续在使用时就能迅速根据表名到这个dictionary找到表结构

可以发现

(

……

……

);

这两个配对的顶格括弧形成的块,就是一张表的表结构内容

那么如何根据那两个括弧来提取这些多行的“块”状内容?

pattern=re.compile(r'^CREATE TABLE.*?^\);$', re.MULTILINE|re.DOTALL)

其中使用re.MULTILINE来进行多行匹配

用re.DOTALL使.能够匹配换行符

用.*?做非贪婪匹配(否则所有的会被匹配成一条,达不到分隔的效果),代码如下:

#!/usr/bin/python
import re
def split_name_and_field(tb_struct):lines=tb_struct.split('\n')tb_nm_line=lines[0]#可以用命名组匹配表名tb_nm_pattern=re.compile(r'CREATE\s+TABLE\s+(?P<tb_nm>T_\w+\b)')tb_nm=tb_nm_pattern.search(tb_nm_line).group('tb_nm')tb_st=lines[2:-1]return tb_nm, tb_st
fp=open('create_table.sql', 'r')
fc=fp.read();
table_block_pattern=re.compile(r'^CREATE TABLE.*?^\);$', re.MULTILINE|re.DOTALL)
result=table_block_pattern.findall(fc)
#可以用前向界定匹配表名
#tb_nm_pattern2=re.compile(r'(?<=CREATE TABLE )\w+')
#table_name_list=tb_nm_pattern2.findall(fc)if __name__=="__main__":table_struct={}for t in result:(tb_nm, tb_st)=split_name_and_field(t)table_struct[tb_nm]=tb_stfor (k,v) in table_struct.items():print k, v

利用python re提取文件中的块内容(多行)相关推荐

  1. python删除文本中指定内容_Python实现删除文件中含“指定内容”的行示例

    本文实例讲述了Python实现删除文件中含指定内容的行.分享给大家供大家参考,具体如下: #!/bin/env python import shutil,sys,os darray = [ " ...

  2. python删除文件部分内容_Python实现删除文件中含“指定内容”的行示例

    本文实例讲述了Python实现删除文件中含指定内容的行.分享给大家供大家参考,具体如下: #!/bin/env python import shutil, sys, os darray = [ &qu ...

  3. python txt提取特定数据_Python提取列表中的内容 用“python”怎么提取文件里的指定内容?...

    用"python"怎么提取文件里的指定内容? python读取文件内容的方法: 一.最方便的方法是一次性读取文件中的所有内容并放置到一个大字符串中: all_the_text = ...

  4. python爬取pdf教程_#如何利用Python抓取PDF中的某些内容#python爬取pdf教程

    如何利用Python抓取PDF中的某些内容 学生每天要学习,工作者要工作,家庭主妇每都要务.不论做什么,都有着相应的操作流同样就会有操作技巧.学生运用技巧学习才不会累,学得还会更快更多:工作者掌握技巧 ...

  5. linux文件删除指定内容,Linux bash删除文件中含“指定内容”的行功能示例

    本文实例讲述了Linux bash删除文件中含"指定内容"的行功能.分享给大家供大家参考,具体如下: #!/bin/sh # 功能: 删除文件中含"指定内容"的 ...

  6. bash删除文件中含指定内容的行

    #!/bin/sh # 功能: 删除文件中含"指定内容"的行 # 运行方式: ./dline.sh c.log ==> 产生输出文件: c.log0array=(" ...

  7. linux删除具有指定内容的文件,Linux bash删除文件中含“指定内容”的行功能示例...

    本文实例讲述了Linux bash删除文件中含"指定内容"的行功能.分享给大家供大家参考,具体如下: #!/bin/sh # 功能: 删除文件中含"指定内容"的 ...

  8. 利用python读取csv文件中url并下载

    这是天池竞赛中数据集下载的csv文件,在这里当然也可以用wget在linux中进行下载,但这样感觉不太cool. 写了个python程序,文件夹栏 import pandas as pd import ...

  9. 利用python将txt文件中的内容写入Excel文件中

    Python是一个强大的语言,解决这点问题非常简单. 首先我们先下载两个包,xlrd,xlwt分别可实现对excel文件的读和写操作. 接下来详见代码: 1.从txt里写入excel文件 # codi ...

最新文章

  1. 吴裕雄 10-MySQL插入数据
  2. webform登录操作中正则表达式运用
  3. java 反射模式_java 设计模式——反射机制的应用
  4. 7分钟理解JS的节流、防抖及使用场景
  5. 15、iOS开发之duplicate symbols for architecture x86_64错误
  6. 大型双标现场?摩托车举报特斯拉逆行反被罚
  7. 一台服务器多个tomcat运行
  8. javascript函数的声明,及返回值
  9. 电商网站模板_微购物商城网站建设:要做好这6点!
  10. vgp虚拟路面_某车型开发阶段实际道路谱和虚拟路面谱对比分析.pdf
  11. 企业微信oauth认证_企业微信登陆
  12. 第二次作业-时事点评
  13. 钢铁少女 无限钻石安卓版下载 和 源代码部署成功
  14. 惠州市有哪些学计算机的学校,惠州有哪些好学校?
  15. 《一网打尽:贝佐斯与亚马逊时代》的推荐及推荐书单
  16. EXCEL数据之美:带你走进数据可视化
  17. 2021年网站不备案还会有收录排名吗
  18. 安卓编译x264与集成使用ffmpeg-demo
  19. 三星android 8.0的变化,三星发布最新android 8.0升级计划 最快11月部分升级
  20. 中关村淘宝实体店买本记

热门文章

  1. android拨号器的
  2. 手机QQ2008聊天记录导入手机QQ2009 塞班第三版Python全代码
  3. 工业网站建设,工业制造网站制作方案
  4. iOS面试大全(不断更新)
  5. Google收录了内页,但是百度不收录新站内页
  6. Codeforces Round #786 (Div. 3) G. Remove Directed Edges——树形dp+记忆化
  7. 超强视频剪切工具Boilsoft Video Splitter7.02.2中文免费绿色版_我是亲民_新浪博客...
  8. 激活文化旅游大数据价值
  9. IBM中国研究院院长沈晓卫谈认知计算
  10. 批处理命令之生成文件列表