我有一个奇怪的搜索案例,并使用python替换文本文件中的字符串。
输入数据:我有一个类似如下所示的文本文件。
QA1,QBFLUX,1.0
many lines
QA2,QBFLUX,1.0
many lines
QA3,QBFLUX,1.0
many lines
QA4,QBFLUX,1.0
many lines
QA5,QBFLUX,1.0
many lines
QA6,QBFLUX,1.0
many lines.
我有两个问题需要解决
使用1.0
搜索并替换0.0
。所需的输出是:
QA1,QBFLUX,0.0
many lines
QA2,QBFLUX,0.0
many lines
QA3,QBFLUX,0.0
在上面的行中,我想将值增加一些值,如0.2
或0.4
。所需的输出是:
QA1,QBFLUX,0.0
many lines
QA2,QBFLUX,0.2
many lines
QA3,QBFLUX,0.4.
上面的“many lines
”表示该部分中会有很多行。
简单来说,我的问题可以总结如下
首先搜索包含QA1
,QA2
等的所有行,并将最后一个条目中的所有值替换为0.0
。
其次,在0.2
,0.4
等行的最后几列中按照QA1
或QA2
的给定增量递增值。
注意:
我已经尝试过文件打开和替换选项,但这并没有解决我的问题
由于缺乏正则表达式的知识,我没有尝试过正则表达式。
文本文件可能包含约5000-6000行,行QA1
,QA2
等行约100-150行。
答案 0 :(得分:2)
Python提供了一个模块fileinput,它对此任务特别方便:
import fileinput
import sys
count = 0
for line in fileinput.input([filename], inplace=True, backup='.bak'):
if line.startswith('QA'):
pre, post = line.rsplit(',', 1)
sys.stdout.write('{},{:0.1f}\n'.format(pre, count))
count += 0.2
else:
sys.stdout.write(line)
我认为您不需要将所有1.0
替换为0.0
,然后将0.0
s替换为递增0.2的数字。相反,只需找到以QA
开头的行,并将最后一个数字替换为所需的数字。
答案 1 :(得分:1)
你可以通过以下步骤实现这一目标:
现在用0.0(val)
将val增加0.2
out= open('output.txt','a')
with open('data.txt','r') as file:
val=0.0
for line in file:
if 'QBFLUX' in line:
tmp=line.split(',')
tmp[-1]=str(val)+'\n'
out.write(','.join(tmp))
val+=0.2
else:
out.write(line)