2016-08-02 34 views
0

Python的字典是在這樣的格式:蟒字典

'{"a":1, "b":2, "c":3}' 

通知它用逗號分隔不同的鍵:值對。

的問題是我有一個CSV文件,該文件由逗號分隔列太:

' 
    "id", "gender", "age", "name" 
"001",  "male", "14", "{"first":"Mike", "last":"Green"}" 
"002", "female", "15", "{"first":"Kate", "last":"Spear"}" 
' 

當我做
pandas.read_csv('csvfile.csv', sep = ',', names=["id", "gender", "age", "name"])

我:

' 
    "id", "gender", "age", "name" 
"001",  "male", "14", "{"first":"Mike" 
"002", "female", "15", "{"first":"Kate" 
' 

原因我想是csv閱讀器將逗號作爲csv文件中的分隔符作爲字典中的名字。由於我只指定了4個名爲「」id「」,「gender」,「age」,「name」「的列,因此忽略了姓氏。

任何想法或可能的解決方案?謝謝!

+2

您是如何生產該文件的?引用也是無用的。 –

+0

是的,我認爲他們也是無用的。該數據集由其他人生成。如果我這樣做,我寧願不要在該字段中使用python字典。現在問題在這裏,我正在嘗試基於此做一些工作。 –

+0

不幸的是,'pandas.read_csv()'對構成可接受的輸入文件的構成要求更高一些。 ''python''引擎接受一個迭代器,但是期望它是'csv.reader()'對象。現在已經過時了。 –

回答

0

您可以更改read_csv使用的分隔符。如果你可以改變的CSV文件使用一個分號爲分離柱,然後你可以使用read_csv(file.csv, sep=';'...)

或者您可以修復從

"001",  "male", "14", "{"first":"Mike", "last":"Green"}" 

的報價,以

"001",  "male", "14", "{'first':'Mike', 'last':'Green'}" 

當然這兩種方法意味着編輯csv文件。

第二看起來更健壯。正則表達式(\{[^"]*)(")([^}]*\})可用於匹配大括號內的引號。 (未經測試)