案例逐步演示python利用正则表达式提取指定内容并输出到csv

该博客介绍了如何使用Python的正则表达式从TXT文件中提取特定内容,如时间戳和RTT值,并将结果保存到CSV文件。首先,通过编写正则表达式来匹配所需数据,然后读取文件,提取信息,最后利用csv模块将数据写入CSV文件。同时,还讨论了如何将数值分列存储以便后续处理。
摘要由CSDN通过智能技术生成

背景和目标

这次我想要处理的是一个txt文件,里面的内容是一台机器定时ping另一台机器的输出结果,想要提取出的内容是时间和rtt值,最后还要把结果输出到csv文件。

1. 明确要提取的内容,编写正则表达式

要提取的文本如下:
在这里插入图片描述
第一步是要编写正则表达式,此时可以先不要读取数据文件。先复制一部分数据到str中,方便测试。
编写正则表达式用到了re模块,因为每个人要处理的文本是不一样的,所以需要自己去学习基本的使用方法。re具体使用方法可以参考这篇文章:
https://zhuanlan.zhihu.com/p/139596371

关键就是弄清楚.*?{}的作用,还有re.S可以匹配到换行符,就可以比较容易地写出正确的表达式。

import re
# 为了方便测试,我把一部分文本先放到str里
str='''
2022-03-11 15:21:48
1
PING 81.71.51.181 (81.71.51.181) 56(84) bytes of data.
64 bytes from 81.71.51.181: icmp_seq=1 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=2 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=3 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=4 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=5 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=6 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=7 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=8 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=9 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=10 ttl=45 time=253 ms

--- 81.71.51.181 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9000ms
rtt min/avg/max/mdev = 250.203/250.563/253.202/0.961 ms
2022-03-11 15:22:40
2
PING 81.71.51.181 (81.71.51.181) 56(84) bytes of data.
64 bytes from 81.71.51.181: icmp_seq=1 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=2 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=3 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=4 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=5 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=6 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=7 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=8 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=9 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=10 ttl=45 time=250 ms

--- 81.71.51.181 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9009ms
rtt min/avg/max/mdev = 250.181/250.256/250.434/0.636 ms
2022-03-11 15:23:44
3
PING 81.71.51.181 (81.71.51.181) 56(84) bytes of data.
64 bytes from 81.71.51.181: icmp_seq=1 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=2 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=3 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=4 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=5 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=6 ttl=45 time=250 ms
64 bytes from 81.71.51.181: icmp_seq=7 ttl=45 time=250 ms
64 bytes from
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值