㈠ 使用正则表达式提取文本中的有效数据
之前进行程序运行时,生成日志文件,内含需提取的数据,但数据与文本信息交织,使用格式化输入如fscanf()等函数难以区分。于是,了解到正则表达式强大文本处理能力,开始学习并利用正则表达式提取文本中的有效数据。本文旨在记录,以备日后参考。
日志文件片段如下,目标是分别提取“Particle Info”与“Fluid Info”所在行的数据,存储为CSV格式至“particle_info.csv”与“fluid_info.csv”文件中。
提取数字字符串的正则表达式,推荐学习资源如“菜鸟教程”,理解并上手快速。正则表达式在线工具regex101能辅助学习与应用。
使用如下正则表达式匹配数字字符串:
- 表示匹配负号,-?表示匹配0或1次,考虑到负数情况;
\dp表示匹配数字,\d+表示匹配1或无穷次;
\.表示匹配字符 .,\.?表示匹配0或1次,考虑有小数或整数情况;
\d*表示匹配0或无穷次数字,考虑出现1.省略小数点后0的可能情况。
通过在线工具验证正则表达式正确性后,执行代码。python利用re模组,读取文件,使用re.search()寻找匹配字符串,返回数据。re.findall()匹配所有满足表达式的字符串,转化为list存储。使用命令行参数,输出重定向获取数据。
C++使用正则表达式库,定义regex_number()函数筛选数字字符串,CSV格式返回。正则表达式中,\d与\.需要转义。命令行参数增加程序灵活性。输出重定向获取数据。
后记,比较Python与C++代码处理速度,Python处理29413行文件需约0.2s,C++需3s。可能C++代码效率问题,期待高手指点。欢迎指出错误,避免在网络传播错误信息。
㈡ 网络工程师Python正则表达式(re实验2,Search函数,处理单行文本)
网络工程师在Python中使用正则表达式re模块的Search函数处理单行文本的关键点如下:
Search函数的作用:
实验目标:
正则表达式设计:
实验步骤:
Python脚本实现:
实验总结:
重点:在处理单行文本时,Search函数能够高效地查找与正则表达式模式匹配的第一个位置,非常适合用于提取日志文件中的关键信息。通过合理的正则表达式设计和Python脚本实现,可以高效地解析和分析日志文件。
㈢ python怎么根据正则表达式提取指定的内容
正则表达式是极其强大的,利用正则表达式来提取想要的内容是很方便的事。下面演示了在Python里,通过正则表达式来提取符合要求的内容。有几个要注意的地方就是:
[1] 要用()将需要的内容包含起来
[2] 编号为0的group是整个符合正则表达式的内容,编号为1的是第一个(及对应)包含的内容
定义一个函数extractData,参数为regex, content, index:
@param regex: 正则表达式,用()将要提取的内容包含起来
@param content: 待提取内容
@param index: 从1开始,可以通过数(来得到,其中0是全部匹配
函数返回第一次匹配的内容
def extractData(regex, content, index=1):
r = '0'
p = re.compile(regex)
m = p.search(content)
if m:
r = m.group(index)
return r
定义一个正则表达式regex,内容为'第(.*)场雪'
定义一个字符串content,内容为'2002年的第一场雪'
定义一个变量index,值为1
调用函数extractData,传入参数regex, content, index,输出结果为'第一场雪'
通过这个例子,可以看到如何使用正则表达式在Python中提取指定内容。