使用正则表达式读取文本数据【Python】

使用正则表达式读取文本数据

假如我们需要处理的数据具有很强的规律性, 例如下面这样, 数据基本上都是一个独立的一行, 并且每个数据都有名称标志.

txt 复制代码
RUN 

 OU = 1.903784

 OV = 1.862293

 OW = 1.860681

 OUINV = 548.000793
 
 STOP 
 
 index = 1

 V = 0.000000

 W = 0.000000

 E_theta = 0.000000

 UINV = 0.000000

 fault_flag= 0

 index = 2

 V = -0.025882

 W = 0.044830

 E_theta = -0.523599

 UINV = 0.000000

 fault_flag= 0

 index = 3

 V = 0.220001

 W = -0.201728

 E_theta = 2.312893

 UINV = 0.000000

 fault_flag= 0

假设我们需要提取E_theta = 后面的数据并绘制为图像, 使用手工处理耗费大量的人力和时间, 这时我们可以用python脚本快速完成这一功能. 以下为详细步骤

1、导入所需要的库

python 复制代码
import re                                       # 导入正则表达式模块库
import matplotlib.pyplot as plt

导入正则表达式re库和绘制图像常用的matplotlib
repython自带;
matplotlib需要用户自己安装, 使用以下命令可安装该库

cmd 复制代码
pip install matplotlib

2、读取存储原始数据的文本文件

python 复制代码
# 从文件中读取数据
file_path = 'data.txt'              # 替换为你的文件路径

# 以只读模式打开文件
# 通常使用默认编码来读取文件, 如果使用其他编码, 可以指定encoding参数
with open(file_path, 'r') as file:
    data = file.read()              # 读取文件的全部内容, 并返回一个字符串
    

如果文件使用GBK编码, 则可以这样写

python 复制代码
with open(file_path, 'r', encoding='gbk') as file:
    data = file.read()

with 用于管理文件的上下文, 可以确保文件在使用后自动关闭, 即使在读取文件发生异常时也是如此.
r 表示以只读模式打开文件.

3、使用正则表达式提取数据

python 复制代码
# 

# re.findall(pattern,string) 在字符串中搜索所有匹配的模式, 如果匹配成功则返回一个匹配对象
# \s*       匹配任何空白字符, 包括空格、制表符、换行符等
# *         表示匹配前面的字符0次或多次
#           用于处理E_theta和 = 之间可能存在的任意数量的空格
# ([-\d.]+) 
# ()        表示捕获组, 用于提取匹配的部分
# [-\d.]    是一个字符集, 匹配以下任意一个字符
# -         匹配负号
# \d        匹配任何数字
# .         匹配小数点
# +         表示匹配前面的字符集1次或多次
#           [RegExr: Learn, Build, & Test RegEx](https://regexr.com/)
# \b        表示单词边界匹配符, 确保E_theta是一个独立的单词, 防止匹配到带有前缀和后缀的单词

e_theta_values = re.findall(r'\bE_theta\s*=\s*([-\d.]+)', data)

# 将提取的字符串转换为浮点数
e_theta_values = [float(value) for value in e_theta_values]

# 输出 E_theta 数据
print("E_theta 数据:")
for value in e_theta_values:
    print(value)

4、使用matplotlib绘制曲线

python 复制代码
# 绘制图像

# marker='o',       表示指定数据点的标记类型为圆圈o
# linestyle='-',    指定线的样式为实线
# color='r'         指定线的颜色为红色

plt.plot(e_theta_values, marker='o', linestyle='-', color='r', label='E_theta')
plt.title('E_theta data change')            # 设置图表的标题
plt.xlabel('index')                         # 设置X轴标签内容
plt.ylabel('E_theta value')                 # 设置Y轴标签内容
plt.grid(True)                              # 显示网格
plt.legend()                                # 显示图例
plt.show()

运行程序后即可得到图像

相关推荐
黑子哥呢?27 分钟前
安装Bash completion解决tab不能补全问题
开发语言·bash
失败尽常态52330 分钟前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_9044477432 分钟前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农32 分钟前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿37 分钟前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Leuanghing1 小时前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
彳卸风1 小时前
Unable to parse timestamp value: “20250220135445“, expected format is
开发语言
dorabighead2 小时前
JavaScript 高级程序设计 读书笔记(第三章)
开发语言·javascript·ecmascript
xinxiyinhe2 小时前
如何设置Cursor中.cursorrules文件
人工智能·python
风与沙的较量丶2 小时前
Java中的局部变量和成员变量在内存中的位置
java·开发语言