python进行批量搜索匹配替换文本文字的matlab操作实例

在进行一些数据处理时,可能需要抓取原文中的一些内容,批量替换原文另外的一些内容,而且事先还需要一步搜索匹配的步骤。

举个例子,如下matlab输出的txt文件,原文件有几万行数据,这里只摘取3行对应的
文件文本大体分成2个大部分,一个是HMNAME COMP,一个是HMNAME PROP,
其中的中间部分有些是一样的,比如13100505_6063-T6_T380,13100505_6063-T6_T770等,
但是它们是散落在文本中的

所以想要的步骤是:

  1. 匹配中间部分
  2. 用HMNAME PROP行中的引号前的数字,替换掉相应的HMNAME COMP中的引号前的数字
  3. 完成
    在这里插入图片描述
    理想的替换之后:
    在这里插入图片描述
    因为源文件有上万条数据,所以只能用python工具自动化操作,不能手动啦

写的最终代码如下:

your_file_name = '111.txt'  #文件路径
with open(your_file_name, 'r') as f:file_data = f.read()#首先把HMNAME COMP和HMNAME PROP各行分成两个list
hmname_comp_lines = []   
hmname_prop_lines = []
for line in file_data.split('\n'):   #逐行判断分类,append进list中if 'HMNAME COMP' in line:hmname_comp_lines.append(line)elif 'HMNAME PROP' in line:hmname_prop_lines.append(line) # 找到HMNAME COMP和HMNAME PROP的各行中具有相同引号里内容的行
for comp_line in hmname_comp_lines:    for prop_line in hmname_prop_lines: if comp_line.split('"')[1] == prop_line.split('"')[1]:     #开始匹配判断中间字符是否一样# 如果一样的话,用HMNAME PROP行中的引号前的数字替换掉相应的HMNAME COMP中的引号前的数字,是一个拼接的方法new_comp_line = comp_line.split('"')[0].replace(comp_line.split('"')[0].split()[2],prop_line.split('"')[0].split()[2]) + '"' + prop_line.split('"')[1] + '"' + comp_line.split('"')[2]+ '"' +comp_line.split('"')[3]+ '"' +comp_line.split('"')[4]print(new_comp_line)# 遍历文档全盘替换file_data = file_data.replace(comp_line, new_comp_line)with open('your_file_name', 'w') as f:f.write(file_data)         #这里是直接写入原文件了,记得事先保存副本以免原文件数据丢失

希望对大家有所启发,记得点赞哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言:箱线图绘制(添加平均值趋势线)

箱线图绘制 1. 写在前面2.箱线图绘制2.1 相关R包导入2.2 数据导入及格式转换2.3 ggplot绘图 1. 写在前面 今天有时间把之前使用过的一些代码和大家分享,其中箱线图绘制我认为是非常有用的一个部分。之前我是比较喜欢使用origin进行绘图,但是绘制的图不太…

vite+vue3发布自己的npm组件+工具函数

记录一下个人最近一次发布npm组件的过程: 一、创建组件和工具函数 执行命令创建一个空项目: npm create vite 创建过程稍微有些慢,不知何故?其中选择vue , 个人暂时使用的JS 。在 src 目录下面创建一个文件 package 存放组件和公…

【Java八股面试系列】JVM-垃圾回收

目录 垃圾回收 堆空间的基本结构 内存分配和回收原则 分代收集机制 Minor GC 流程 空间分配担保 老年代 大对象直接进入老年代 长期存活的对象将进入老年代 GC的区域 对象存活判定算法 引用计数法 可达性分析算法 finalize() 字符串常量判活 类判活 垃圾回收算…

1、将 ChatGPT 集成到数据科学工作流程中:提示和最佳实践

将 ChatGPT 集成到数据科学工作流程中:提示和最佳实践 希望将 ChatGPT 集成到您的数据科学工作流程中吗?这是一个利用 ChatGPT 进行数据科学的提示的实践。 ChatGPT、其继任者 GPT-4 及其开源替代品非常成功。开发人员和数据科学家都希望提高工作效率,并使用 ChatGPT 来简…

提示工程实战案例

如果你在 2023 年听说过生成式人工智能(Generative AI),你一定也听说过提示工程(Prompt Engineering)。 通过快速的互联网搜索或质疑 GenAI 本身,人们可以轻松找到相关的定义、提示技术,例如 零…

实践:从库分页参数

最近在写用户账单的功能,需要查询到两年千的消费记录,但是目前消费记录日志表里面记录的是一年内的数据,对于一年前的记录都记录在了归档表。因此想要查询两年前的数据就必须要查询归档表。 对于正常的情况,先查主表,当…

机器学习---半监督学习简单示例(标签传播算法)

1. 使用半监督学习方法 Label Spreading 在一个生成的二维数据集上进行标签传播 import numpy as np import matplotlib.pyplot as plt from sklearn.semi_supervised import label_propagation from sklearn.datasets import make_circles# generate ring with inner box n_s…

Apache Zeppelin 整合 Spark 和 Hudi

一 环境信息 1.1 组件版本 组件版本Spark3.2.3Hudi0.14.0Zeppelin0.11.0-SNAPSHOT 1.2 环境准备 Zeppelin 整合 Spark 参考:Apache Zeppelin 一文打尽Hudi0.14.0编译参考:Hudi0.14.0 最新编译 二 整合 Spark 和 Hudi 2.1 配置 %spark.confSPARK_H…

tee漏洞学习-翻译-2:探索 Qualcomm TrustZone的实现

原文:http://bits-please.blogspot.com/2015/08/exploring-qualcomms-trustzone.html 获取 TrustZone image 从两个不同的位置提取image 从手机设备本身从google factory image 已经root的Nexus 5设备,image存储在eMMC芯片上,并且eMMC芯片…

postgresql 初始化驱动支持高可用配置

条件: jdk 1.6及以上 配置: jdbc:postgresql://host1:port1,host2:port2/database连接故障转移: To support simple connection fail-over it is possible to define multiple endpoints (host and port pairs) in the connection url sepa…

分享65个节日PPT,总有一款适合您

分享65个节日PPT,总有一款适合您 65个节日PPT下载链接:https://pan.baidu.com/s/1hc1M5gfYK8eDxQVsK8O9xQ?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知…

SQLite database实现加密

注意:以下操作以VS2022为开发工具,以C#为开发语言。 数据加密原因 软件在使用的各个场景,很多都需要数据具有保密性,于是对于数据库就需要加密。特别是在某些特定领域或存储敏感数据尤其如此。 SQLite加密实现 SQLite加密有两种…

Spring Boot(六十五):使用 ant.jar 执行 SQL 脚本文件

ant用处,主要用在编译java文件,打包,部署。打包:jar,war,ear包等。ant在项目中有很重要的作用。今天我们讲解它的另一个作用:执行 SQL 脚本文件。 1 引入依赖 <dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId&g…

Go语言每日一练——链表篇(五)

传送门 牛客面试笔试必刷101题 ----------------合并k个已排序的链表 题目以及解析 题目 解题代码及解析 解析 这一道题与昨天的合并链表题目类似&#xff0c;但是由于有K个且时间复杂度要求控制在O(nlogn)&#xff0c;这里主要有两种解法&#xff1a;一种是依旧使用归并来…

Arduino 串口绘图仪简单使用

1、工具所在位置 串口绘图仪实际上是从预设的串口获取值并将其绘制在xy轴图每获取到一组数据向左滑动一个单位&#xff0c;读取数据的速度起快&#xff0c;滑动就越快。 Y轴代表来自串口的值&#xff0c;可以是单个也可以是一组 。在读取串口数据时遇到"\n"&#xf…

正点原子-STM32通用定时器学习笔记(1)

1. 通用定时器简介&#xff08;F1为例&#xff09; F1系列通用定时器有4个&#xff0c;TIM2/TIM3/TIM4/TIM5 主要特性&#xff1a; 16位递增、递减、中心对齐计数器&#xff08;计数值&#xff1a;0~65535&#xff09;&#xff1b; 16位预分频器&#xff08;分频系数&#xff…

【leetcode】LCR 123. 图书整理 I(简单)题解学习

题目描述&#xff1a; 书店店员有一张链表形式的书单&#xff0c;每个节点代表一本书&#xff0c;节点中的值表示书的编号。为更方便整理书架&#xff0c;店员需要将书单倒过来排列&#xff0c;就可以从最后一本书开始整理&#xff0c;逐一将书放回到书架上。请倒序返回这个书…

RP2040 SPI

SPI 的库文件是arduino开源库&#xff0c;在程序中include。 SPI IIC都是通信协议【模块】&#xff0c;需要硬件支持&#xff0c;MCU都会集成相应的模块。arduino都集成在了内核中&#xff0c;直接用API函数调用即可。其他单片机的架构也是相同的。 SPI的库和函数及其相关说明…

已解决org.springframework.context.ApplicationContextException异常的正确解决方法,亲测有效!!!

已解决org.springframework.context.ApplicationContextException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 问题分析 报错原因 解决思路 解决方法 步骤1: 检查异常细节 步骤2: 验证外部依赖 步骤3: 校验Spring配置 步骤…

LeetCode第1124题 - 表现良好的最长时间段

题目 给你一份工作时间表 hours&#xff0c;上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候&#xff0c;那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」&#xff0c;意味在这段时间内&#xff0c;「劳累的天数」是严格…