使用正则表达式读取文本数据【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库
re库python自带;
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()

运行程序后即可得到图像

相关推荐
kakakahahahaha8 分钟前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i14 分钟前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
yl45301 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
朝朝辞暮i1 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
笨笨饿1 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
YOLO数据集集合1 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
for_ever_love__2 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI2 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
I Am a robert girl2 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航19832 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程