2014-11-22 62 views
1

我有一個帶有2列的CSV文件。我想在字典中存儲第1列作爲鍵和第2列作爲值,並將其存儲在輸出文件中。矩陣到字典的轉換

import math 
import numpy 
import csv 
from decimal import * 
#opening Result file with 
open('output.csv','rb') as file: 
    contents = csv.reader(file) 
#storing content of Result file in matrix 
matrix = list() 
    for row in contents: 
    matrix.append(row) 
lookup = dict(matrix) # Storing 2 columns of matrix as key:value in dictionary 
# open a new csv file for writing. 
csv_out = open('MPA.csv', 'wb') 
mywriter = csv.writer(csv_out)`` 
csv_out.close() 

我寫了這個代碼不工作,產生所需的輸出。

+0

什麼輸出你期待和代碼生成了什麼?它會拋出一些錯誤或產生錯誤的結果.. – 2014-11-22 08:45:01

+0

我想它寫一個輸出csv文件的關鍵n值。它會生成一個空白輸出文件。 – 2014-11-22 09:19:06

+0

但是你的輸入已經是一個帶有'key,value'列的csv文件,那麼你的輸出如何不同呢? – Eric 2014-11-22 10:07:22

回答

0
import csv 
import json 

with open('test.csv') as f: 
    with open('MPC.json', 'w') as g: 
    json.dump(dict([(v[0], v[1]) for v in csv.reader(f)]), g) 
0

的事情是要創建一個csv.writer但不寫任何東西到file.That是空文件的原因。關閉文件之前添加下面一行:

csv_out = open('MPA.csv', 'wb') 
mywriter.writerows(lookup.items()) # Add this line. 
csv_out.close() 

如果您想通過標籤,而不是逗號分隔的數據替換此:

mywriter = csv.writer(csv_out) 

由:

mywriter = csv.writer(csv_out, delimiter='\t') 
+0

非常感謝你。它寫了一個文件。但刪除了所有重複鍵及其相應的值 像文件就像早先 RAB10 \t -0.016575 MEF2C \t -0.019655 SP2 \t 1.24E-01 SP2 \t 0.18870625 SP2 \t 0.0879425 ICK \t -0.02534625 JAG1 \t -0.01105125 但現在它變成 FOXQ1 \t -0.0905225 CBLB \t -0.00853 PPP2R2D \t 0.117835 SP2 \t 0.0879425 SP4 \t -0.02329625 PPP2R2C \t 0.138485 MUC4 \t 0.0942 MGEA5 \t -0.020625 意味着重複SP2是現在它被刪除 – 2014-11-22 10:58:06

+0

感謝ü它幫助了很多 – 2014-11-22 12:09:29