在python中搜索和替换字符串行

2024-05-26 20:47:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个奇怪的例子,用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. 搜索并将1.0替换为0.0。所需输出为:

    QA1,QBFLUX,0.0
    many lines
    QA2,QBFLUX,0.0
    many lines
    QA3,QBFLUX,0.0
    
  2. 在上面几行中,我想增加一些值,比如0.2或{}。所需输出为:

    QA1,QBFLUX,0.0
    many lines
    QA2,QBFLUX,0.2
    many lines
    QA3,QBFLUX,0.4.
    

上面的“many lines”表示该部分中有许多行。在

简而言之,我的问题可以概括如下

  1. 首先搜索包含QA1QA2等的所有行,并将最后一个条目中的所有值替换为0.0

  2. 其次,通过给定的增量递增值,如0.2或{}在最后一列中使用QA1QA2等。

注:

  • 我尝试过“文件打开并替换”选项,但这并没有解决我的问题

  • 我没有尝试过正则表达式,因为缺乏正则表达式方面的知识。

  • 文本文件可能包含大约5000-6000行,行QA1QA2等。行大约是100-150行。


Tags: 数据字符串条目增量many例子lines文本文件
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)

我认为在用递增0.2的数字替换0.0之前,不需要将所有1.0替换为0.0。相反,只需找到以QA开头的行,并用所需的数字替换最后一个数字。在

您可以通过以下步骤实现:

  1. 打开新文件以写入数据
  2. 在行中搜索单词“QBFLUX”
  3. 现在将1.0替换为0.0(val)

  4. 将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)
    

相关问题 更多 >

    热门问题