逗号分隔的csv文件中的python dict

时间:2016-08-02 18:34:56

标签: python csv pandas dictionary

Python dict的格式如下:

'{"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阅读器认为逗号在dict中的第一个名称后面是csv文件中的分隔符。因为我只指定了4列名为" " id","性别","年龄","名称"",所以它忽略姓氏。

对此有何想法或可能的解决方案?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以更改read_csv使用的分隔符。如果您可以更改csv文件以使用分号分隔列,则可以使用read_csv(file.csv, sep=';'...)

或者,您可以修复

中的引用
"001",     "male",    "14",    "{"first":"Mike", "last":"Green"}"

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

当然,这两种方法都意味着编辑csv文件。

第二个看起来更健全。正则表达式(\{[^"]*)(")([^}]*\})可用于匹配大括号内的引号。 (另)