2015-12-07 184 views
0

我想从文本文件中的列中提取数据。其中一列有一个头,我还需要与头的重复条目提取一整列,即:使用Python从文本文件中的列提取数据

col1 col2 col3 
1  1  1 
2  2  2 
3  3  3 

到:

col1 col2 col3 col3 
1  1  1 col3 
2  2  2 col3 
3  3  3 col3 

我奋力隔离头。

for line in my_file: 
    line = line.split("\t") 
    column = line[0:3] #col1-3 

如何从col3获取标题,然后将其重复?我是否必须首先通过"\n"划分线路,然后再通过"\t"

我试图做到这一点,但有错误信息?

+0

是您的文件由制表符分隔CSV文件? – Lam

+0

它是一个由制表符分隔的文本文件 – trouselife

+0

您可以将该错误作为编辑发布吗? –

回答

0

您可以使用Python的CSV模块,如下所示。这可以自动处理所有列的分割。默认情况下,它假定列由逗号指定要使用的分隔符隔开,但这是可以切换到标签:

import csv 

with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output: 
    csv_input = csv.reader(f_input, delimiter='\t') 
    csv_output = csv.writer(f_output, delimiter='\t') 
    header = next(csv_input) 
    csv_output.writerow(header + [header[-1]]) 

    for cols in csv_input: 
     print cols 
     csv_output.writerow(cols + [header[-1]]) 

了给定的输入,你会得到下面的输出(列制表符分隔):

col1 col2 col3 col3 
1 1 1 col3 
2 2 2 col3 
3 3 3 col3 

使用Python 2.7.9

0

测试你为什么不使用熊猫。

 import pandas as pd 
    df = pd.read_csv("filename.tsv",sep="\t") 

为了得到列标题也可以使用

 df.ix[:,2:] 
0
with open('/home/prashant/Desktop/data.txt') as f: 
for l in f: 
    print l.strip().split("\n") 

这可能会解决你的问题,导致我越来越有

[COL1 COL2 COL3]

[1 1 1]

[2 2 2]

[3 3 3]