2015-12-22 73 views
3

我正在嘗試寫入列(A,B,C等)的csv文件而不是行。這是我想要的代碼:有了這個,我可以寫入列A.在下一個if條件中,如果rec值大於10,我想添加,然後在列B中打印。我嘗試了類似這樣的東西在評論的代碼中,但它寫入行而不是列。這樣做可能會有很大的工作量,但是請簡單而整潔的方式嗎?謝謝! (該num_file.txt包含100個號碼隨機生成的,值0到100之間)寫入CSV文件列而不是Python中的行

import csv 
    l =[] 
    with open("num_file.txt", "r") as ipfile, open("op1.csv", "w") as opfile: 
     reader = csv.reader(ipfile) 
     writer = csv.writer(opfile) 
     for rec in reader: 
      for i in range(len(rec)): 
      if float(rec[i]) < 10:    
       l.insert(0,[rec[i]]) 
      #if float(rec[i]) > 10 and float(rec[i]) < 20: 
      # l.insert(1,[rec[i]]) 
     writer.writerows(l) 

CSV文件輸出現在是這樣的:

4.57

2.1

7.05

8.05

3.27

8.9

5.45

8.74

4.55

The output csv file

+0

你的號碼文件是怎麼樣的?例如逗號分隔的數字? – stucash

回答

1

你應該只寫一個單行writer.writerow(l)。如果您使用writerows(l),則會爲l中的每個元素編寫一行,這就是每行有一個元素的原因。

Here are the csv.writer docs

+0

也打我吧,[文檔在這裏](https://docs.python.org/2/library/csv.html#csv.csvwriter.writerow)。 – Sam

+0

感謝您的評論。我不想寫所有元素的一行。我想像我一樣寫每行一個元素。但接下來我想要做的是爲下一個條件,如果每個元素都在10到20之間,我想將每個元素寫入一個單獨的行,就像我的第一個編輯器,但是在B列中。我正在使用代碼被註釋掉,但不起作用,它仍然寫入同一列A而不是B –