如何使用列表替换文本文件中的列?

时间:2013-11-05 23:10:35

标签: python python-2.7

我想根据另一个文本文件中的值替换文本文件中的列。我跳过前3个标题行并从file1读取第二列到列表L并想要替换file2中的第2列。以下就是我所拥有的:

L = []
for index, line in enumerate(open("C:/file1.txt", "r")):
    if index <= 2:
        continue
    else:
        L.append(line.split()[1])

例如:

L = ['2.3','1.2']

和文本文件是:

 x     y    z
1.1   2.1  1.4
1.9   1.8  2.1

我想用变量y替换列表L值的值。 任何建议都会很有意义。

2 个答案:

答案 0 :(得分:1)

这是一种方法,假设列表中的元素数与文件中的行数相同。还假设您需要在元素之间选项卡。还假设“第2列”表示第二列,使用python索引1.最后的假设,您只想将替换文件打印到屏幕上。在OSX或Linux上,您可以通过在命令后面添加> editedfile.txt来捕获已编辑的文件。如果有四列或更多列,只需添加elements[2:]而不是elements[2]

# This must have the same number of values as lines in the file
L = ['2.3','1.2']
with open("file1.txt", "r") as f:
    # skip the first line but output it?
    print f.readline().rstrip('\n') 

    for value,line in zip(L,f):
        elements = line.split()
        print "{}\t{}\t{}".format(elements[0],value,elements[2])

输出(中间值已更改为2.31.2,我将标签替换为空格以进行格式化:

 x     y    z
1.1    2.3    1.4
1.9    1.2    2.1

答案 1 :(得分:0)

可能需要itertools.izipitertools.izip_longest

import itertools
with open(fname1) as f1, open(fname2) as f2:
    for line1, line2 in itertools.izip(f1, f2):
        pass # some computations here