2015-12-07 98 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]