2010-07-09 47 views
2

我會解釋我的整個問題:
我有2個的CSV文件:從CSV文件中的特定列追加到另一個使用python

  • 項目table.csv(大約有50列)
  • 交互matrix.csv(大約有45列)

我想字符串從項目table.csv與字符串之間用點(.)追加在col[43]在交互matrix.csv的col[1]兩個Ë串

接下來,

  • 交互matrix.csv有套頭..
  • 第一次山坳現在必須做我上面
  • 所有提到什麼後所附的字符串其他剩餘的列只有0和1的
  • 我應該從這個interaction-matrix.csv中只提取那些具有1的列並將其複製到一個新的csv文件中...(第一列完好)

這是代碼我想出...

我得到一個錯誤與keepcols線VE ...

import csv 
reader=csv.reader(open("project-table.csv","r")) 
writer=csv.writer(open("output.csv","w"),delimiter=" ") 
for data in reader: 
     name1=data[1].strip()+'.'+data[43].strip() 
     writer.writerow((name1, None)) 


reader=csv.DictReader(open("interaction-matrix.csv","r"),[]) 
allrows = list(reader) 
keepcols = [c for c in allrows[0] if all(r[c] != '0' for r in allrows)] 

print keepcols 
writer=csv.DictWriter(open("output1.csv","w"),fieldnames='keepcols',extrasaction='ignore') 
writer.writerows(allrows) 

這是錯誤我得到:

Traceback (most recent call last): 
    File "prg1.py", line 23, in ? 
    keepcols = [c for c in allrows[0] if all([r[c] != '0' for r in allrows])] 
NameError: name 'all' is not defined 

項目表和交互矩陣在它們各自的第一列都有相同的數據..所以我只是將prj-table的col [43]附加到同一表本身的col [1] ...

+0

任何幫助代碼將不勝感激... – totallyignorant 2010-07-09 10:35:36

+2

你使用的是什麼版本的Python? 'all'被添加到python-2.5中。你需要更新至少到那個版本,或者更好的到最新的穩定2.7 – SilentGhost 2010-07-09 10:53:54

+0

好吧我只是想通了,我正在使用Python 2.3 ...我將立即改變我的版本 – totallyignorant 2010-07-09 10:59:13

回答

1

編輯您的問題以顯示您收到的錯誤消息。更新:NameError可能意味着你正在使用沒有all()或者(你已經使用all作爲變量名並且沒有顯示你運行的確切代碼)的Python(哪個?)的(舊)版本

注意:open兩個文件都是二進制模式(「rb」和「wb」)。

你說:「我想在project-table.csv的col [43]中添加string-string.csv的col [1]中的字符串,並在兩個字符串之間加上一個點(。)」HOWEVER您正在使用project-table.csv的col [2](不是col [1])(不是在此階段打開的interaction-matrix.csv)。

+0

好吧這裏的東西... 項目表和交互矩陣都在它們各自的第一列有相同的數據..所以我只是將prj-table的col [43]添加到同一表本身的col [1] ... – totallyignorant 2010-07-09 10:50:01

+0

不好 - 編輯你的問題與這些事實。 – 2010-07-09 10:53:14

+0

我已經完成編輯 – totallyignorant 2010-07-09 11:02:29

相關問題