2017-10-16 48 views
1

我想使用此代碼如何創建一個CSV字典,每個索引值是他們的主體類型

import csv 

with open('Trials/readtest.csv', mode='r') as infile: 
    reader = csv.reader(infile) 
    with open('Trials/readtest_2.csv', mode='w') as outfile: 
     writer = csv.writer(outfile) 
     mydict = {rows[0]: type(rows[1]) for rows in reader} 
    print(mydict) 

CSV文件中包含此

option 1 1 
option 2 True 
option 3 False 
option 4 no_cursor 
option 5 5 
option 6 6 
option 7 7 
option 8 8 
option 9 9 
option 10 10 
option 11 11 
option 12 12 
option 13 13 
讀取一個CSV文件導入到字典

我正在嘗試創建字典,以便第一列中的每個值都索引第二列中某個類型的值。例如,1是一個整數,True是布爾值,False是布爾值,no_cursor是字符串等。

但是,當我運行我的代碼時,所有保存到字典中的值都會自動轉換爲一個字符串。

任何幫助,將不勝感激!

回答

0

如果您想要更細緻地控制如何將字符串解析爲類型,例如如果您有一些自定義對象,則需要使用不同的方法,但可以使用ast.literal_eval來覆蓋所有基本的內置類型。基本上它是eval,但安全地將任意字符串轉換爲適當的類型。在這裏閱讀更多:https://docs.python.org/3/library/ast.html#ast.literal_eval

import csv 
import ast 

with open('Trials/readtest.csv', mode='r') as infile: 
    reader = csv.reader(infile) 
    with open('Trials/readtest_2.csv', mode='w') as outfile: 
     writer = csv.writer(outfile) 
     mydict = {rows[0]: ast.literal_eval(rows[1]) for rows in reader} 
    print(mydict) 
+0

謝謝,幫助非常大! :)但似乎literal_eval()函數試圖評估字面上應該是字符串的索引並返回一個異常「值錯誤:格式錯誤的字符串」 –

+0

這是因爲它期望參數是一個有效的文字,並且對於字符串文字他們必須被引號包圍。你需要創建你的數據,以便字符串值在它們周圍有引號,或者作爲一種解決方法,你可以捕獲異常並假定它應該是一個字符串。 – jackarms

相關問題