Python:使用标题和数字列读写文本文件

时间:2014-05-08 09:04:07

标签: python file csv

我有一个文本文件,其中包含一些标题行和一些列(数字)。 我想读取此文件跳过标题,然后选择一些列和 使用Python脚本将它们写入新文件中。

例如,我们可以调用in_table.txt下方的数据。 我想跳过标题(也是空行), 然后选择第一列和第四列(仅限数值) 并将它们保存在没有标题的新文件out_table.txt中,只保存数字。 我怎么能用Python脚本呢?

非常感谢!!

in_table.txt:

hline1 hline1 hline1
hline2 hline2 hline2

hline3 hline3 hline3

par1  par2  par3  par4  par5
1.    10.   100.  1000. 10000.
2.    20.   200.  2000. 20000.
3.    30.   300.  3000. 30000.
4.    40.   400.  4000. 40000.
5.    50.   500.  5000. 50000.

1 个答案:

答案 0 :(得分:2)

如果您坚持使用空格分隔符,请使用

with open('in_table.txt') as f:
    # Iterate through the file until the table starts
    for line in f:
        if line.startswith('------'):
            break
    # Read the rest of the data, using spaces to split. 
    data = [r.split() for r in f]

with open('out_file.csv', 'w') as of:
    for r in data:
        # Write only column 0 and 2 (re: 0-indexing)
        of.write('%s, %s\n'%(r[0], r[2]))

<强> CSV

如果您使用逗号分隔,则可能是内置csv库中的pythons

import csv 
with open('in_table.txt') as f:
    for line in f:
        if line.startswith('------'):
            break
    data = [r for r in csv.reader(f)]

with open('out_file.csv', 'w') as of:
    for r in data:
        of.write('%s, %s\n'%(r[0], r[2]))

或者更简洁

import csv 
with open('in_table.txt') as f:
    for line in f:
        if line.startswith('------'):
            break  
    data = [r[0]+r[2] for r in csv.reader(f)]

wrt = csv.writer(open('out_file.csv', 'w'))
wrt.writerows(data)