2013-04-20 50 views
0

我有一个csv文件,我正在解析它将这些内容读入字典。但是,下面的代码是给我的所有关键的每个值周围的括号:值对:在将键值对插入字典之前删除字符

import csv 

f = open(input('Which csv file: ')) 
cdata = csv.reader(f, delimiter = ';', quoting = csv.QUOTE_NONNUMERIC) 
cdict = {} 
for row in cdata:  
    cdict[row[0]] = row[1:] 
print(cdict) 
f.close() 

我曾尝试:

for row in cdata: 
    row = "".join(row) 
    cdict[row[0]] = row[1:] 

但收到错误消息:

TypeError: sequence item 0: expected str instance, float found 

的因为我读取csv的内容而不是字符串是为了首先删除多余的字符。我需要在字典中输出最终的输出,但不包含csv中的实际数字,即不包含引号或括号。

下面不会返回我要找的,但必须有这样做的更pythonic的方法:

for row in cdata:  
    cdict[row[0]] = row.pop() 

例CSV数据:

Number;Value 
0;13.168159 
1;13.1681598889 
2;13.0313661591 
+0

csv有多少列?他们都是数字吗? – jujaro 2013-04-20 21:56:44

+0

是的。两列,除列标题外的所有数字。在csv的第一行中为两列指定标题。 – user2277435 2013-04-20 22:28:33

回答

0

由于只有两列我认为这是更pythonic

cdata = csv.reader(f, delimiter = ';', quoting = csv.QUOTE_NONNUMERIC) 
print dict(cdata)