用多个列表元素替换txt文件中的特定行

时间:2017-02-03 10:06:21

标签: python python-2.7

我们说我有一个具有这种结构的文本文件:

foo
bar
Important line
none

我想用多个列表元素替换none,因此文本文件如下所示:

foo
bar
Important line
E:\\gaz.txt    
E:\\bar.txt
E:\\foo.txt

但是,原始文件包含几个 none字符串,我只希望删除此字符串。

我可以在Important line下添加列表元素,但我不知道如何在不直接调用行号的情况下正确删除none字符串(文件名列表是动态的,因此会有所不同) :

import fileinput

files_txt = ['E:\\foo.txt', 'E:\\bar.txt', 'E:\\gaz.txt']

for line in fileinput.input('E:\\inputfile.txt', inplace=1):
    print line,
    if line.startswith('Important line'):        
        for filelist in reversed(files_txt):
            print filelist

我找到了print line.replace("none", "files_txt"),之类的内容,但这并没有正常工作(或者我只是不知道在哪里正确使用它)。

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

import fileinput

files_txt = ['E:\\foo.txt', 'E:\\bar.txt', 'E:\\gaz.txt']
should_skip_none = False

for line in fileinput.input('E:\\inputfile.txt', inplace=True):
    if line.startswith('none') and should_skip_none:
        should_skip_none = False
        continue
    else:
        print line
        if line.startswith('Important line'):
            should_skip_none = True        
            for filelist in reversed(files_txt):
                print filelist

答案 1 :(得分:0)

import fileinput

files_txt = ['E:\\foo.txt', 'E:\\bar.txt', 'E:\\gaz.txt']
for line in fileinput.input("E:\\inputfile.txt", inplace=True):
    if line.startswith("none"):
        print(line.replace("none", ''), end='')
    elif line.startswith('Important line'):
        print(line)
        for filelist in reversed(files_txt):
            print(filelist)
    else:
        print(line)