2013-10-14 111 views
1

我有一個CSV數據文件,如下所示:如何從CSV文件獲取輸入並使用Python編寫特定輸出?

a,b,c,d,e,f 
0,0,AER,0,DME,0 
0,0,ASF,0,LED,0 

如何採取從列C和E的投入,並把它們輸出到類似:

I like [column C] and [column E] 
I like [column C] and [column E] 

例如:

I like AER and DME 
I like ASF and LED 

現在我有以下代碼:

import csv 

header1 =['c'] 
header2 =['e'] 

with open('routes2.csv', 'rb') as csvfilein, open('out.csv', 'wb') as csvfileout: 
    reader = csv.DictReader(csvfilein) 
    writer1 = csv.DictWriter(csvfileout, header1, extrasaction='ignore') 
    writer2 = csv.DictWriter(csvfileout, header2, extrasaction='ignore') 
    for line in reader: 
     writer1.writerow(line), writer2.writerow(line) 

我被困在試圖弄清楚如何將文本追加到C和E列的數據。我該怎麼做?

+0

你想要的輸出不是CSV - 所以我基於剛剛創建可以採用的線路答道 –

回答

0

嘗試:

import csv 
    header1 =['c'] 
    header2 =['e'] 

    with open(r'<input_file_path>', 'rb') as csvfilein, open(r'<output_file_path>', 'wb') as csvfileout: 
     reader = csv.DictReader(csvfilein) 
     for line in reader: 
      csvfileout.write("I like "+line.get(header1[0])+" and "+line.get(header2[0])+"\n") 

OUTPUT:

I like AER and DME 

I like ASF and LED 
+0

感謝Vivek,這工作!現在我明白這是如何運作的更好。 :) – Infection

4

您可以使用字符串格式化,並提供如由csv.DictReader返回row對象:

with open('routes2.csv', 'rb') as csvfilein: 
    reader = csv.DictReader(csvfilein) 
    for row in reader: 
     print 'I love {c} and {e}'.format(**row) 
+0

對不起,我已經在我的問題更清晰!我正在尋找將'我愛{c}和{e}'輸出到單獨的文件中。謝謝喬恩! – Infection

1

喜歡這個?

with open('routes2.csv', 'rb') as csvfilein: 
reader = csv.DictReader(csvfilein) 
for line in reader: 
    print "I like %s and %s" % (line["c"], line["e"]) 

輸出:

我喜歡AER和DME
我喜歡ASF和LED

1

輸出文件只包含純文本的,因此不是一個.csv文件,因此沒有必要使用csv.DictWriter創建它。如圖所示,將print語句的輸出重定向到文件也很容易。

import csv 

header1 = ['c'] 
header2 = ['e'] 
format_specifier = 'I like %({0[0]})s and %({1[0]})s'.format(header1, header2) 

with open('routes2.csv', 'rb') as csvfilein, open('out.txt', 'w') as fileout: 
    for row in csv.DictReader(csvfilein): 
     print >> fileout, format_specifier % row 
相關問題