栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用正则表达式提取文件中满足条件的内容

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用正则表达式提取文件中满足条件的内容

        最近遇到需要处理一个很大文件的情况,需求是提取满足以`(ASCII 十进制 96)开头’结束的字符串,例如xxxxx`abcdedg'。

        尝试在shell脚本中用正则表达式提取。有点曲折,后来通过python实现了,后续的工作就顺利很多。

        python 的re 模块提供了compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() , search() 和findall() 这几个函数使用。菜鸟教程是个好网站!

语法格式为:

re.compile(pattern[, flags])

参数:

  • pattern : 一个字符串形式的正则表达式

  • flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

    1. re.I 忽略大小写
    2. re.L 表示特殊字符集 w, W, b, B, s, S 依赖于当前环境
    3. re.M 多行模式
    4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
    5. re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库
    6. re.X 为了增加可读性,忽略空格和 # 后面的注释

  • python利用正则表达式提取文本中特定内容 - ZhangHT97 - 博客园正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python https://www.cnblogs.com/ZhangHT97/p/13427325.html

        看着还是挺抽象, 比如我这个例子,里面的pattern 不知道给什么,参考了一位大神的帖子,得到答案,真的不胜感激!

        原来可以这样re.compile('<开始字符>.+<结束字符>')就表示匹配以<开始字符> 到<结束字符> 的内容。我这种情况,re.compile('`.+'') 就是我想要的了。注意此处用到了转义字符, 因为和包正则表达式的单引号冲突。

        同时还学到,如果要匹配<开始字符>之前以及<结束字符>之后的内容,re.compile('<开始字符>(.+)<结束字符>')

import re, sys

filename = "multi.error"
result = []
i = 0
pattern = re.compile('`.+'')
with open(filename, "r") as f:
        lines = f.readlines()
        with open ("result.txt", "w") as p:
                for line in lines:
                        result = pattern.findall(line)
                        #因为每行只会有一个满足条件的内容,所以取数据第0个
                        p.write(result[0])

 如果line = xxxxx`abcdedg'

运行结果如下:

`abcdedg'

靡不有初,鲜克有终。好好学习,天天向上!

参考内容:

1. python利用正则表达式提取文本中特定内容 - ZhangHT97 - 博客园

2. Python 正则表达式 | 菜鸟教程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号