2016-03-14 29 views
0

我想打印出我的第一列與其他列分別作爲選項卡(分離選項卡)。例如Col1 + Col2用於第一次打印,Col1 + Col3用於第二次Col1 + Col4等等。不過,我用下面的代碼打印出Col1 + Col2。爲什麼循環沒有進展?如何從Python中的txt中選擇不同的列

import csv 
with open('/Users/elf/Desktop/TEST_DATA/text_haplo.txt', 'r', encoding="utf-8", errors="ignore") as text_haplo: 
    next(text_haplo) 
    for i in range(1, 5): 
     for line in text_haplo: 
      line = line.split('\t') 
      print(line[0], line[i]) 

輸入是:

A 1 2 3 
B 10 20 30 
C 100 200 300 

而且我想輸出某事像:

A 1 
B 10 
C 100 

A 2 
B 20 
C 200 

A 3 
B 30 
C 300 
+0

請編輯您的問題幷包含輸入樣本。 – 2016-03-15 07:37:10

+0

我編輯也輸入@LutzHorn – elfxx

回答

0

更新版本:

for i in range(1, 4): 
    with open('test.csv') as f: 
     for line in f: 
      line = line.rstrip().split('\t') 
      print(line[0], line[i]) 
     print() 

然而,這不是一個好的做法一次又一次地讀取文件。只有當您的目標機器沒有RAM或文件非常大時纔可以接受。否則,最好將其讀入內存,然後按照所需順序輸出:

data = [] 
with open('test.csv') as f: 
    for line in f: data.append(line.rstrip().split('\t')) 

for i in range(1, 4): 
    for columns in data: 
     print(columns[0], columns[i]) 
    print() 
+0

非常感謝@Grief。然而,他們都不是我想要的,這是訂單的原因。 – elfxx

+0

是的,它的工作!非常感謝你@Grief – elfxx

+0

@elfxx:請考慮upvoting /接受在這種情況下的答案(http://stackoverflow.com/help/someone-answers) – Grief

相關問題