2015-06-03 57 views
0

csv文件的数据类型我有一个CSV文件中的以下数据: -如何获得使用Python

User_ID Date Num_1 Comp_ID 
101 4/14/2015 1 21 
102 5/12/2014 11 1 

每列都有一个类型。

我想提取和操纵有int数据类型的列。

不确定为什么下面的代码不工作。

import csvkit 
file_name ='file.csv' 
with open(file_name,'r') as f: 
    reader=csvkit.reader(f) 
    header = reader.next() 
    for items in header: 
     if type(items) == int: 
      print row 

我没有得到任何输出,当我运行这个。

+0

'类型(项目)'will * always *是'str',除非将其转换为此类型,否则它不会是'int'。 – CoryKramer

+0

如何找出列的类型? – satyaki

+0

'if items.isdigit()'? – CoryKramer

回答

0

您只能读取它作为一个string,然后强制转换,为int

转换stringint

def str2int(str): 
    try : 
     return int(str) 
    except : # handle this exception correctly 
     print "error in str2int()" 

print str2int("100") 
print type(str2int("100")) 
+1

如果你想要这样做,你应该更具体'除了ValueError:' – CoryKramer

+0

@CoryKramer - 是的,这是正确的!我只是在那里发表评论,让他处理它,但他想要。 – sudhishkr

0

我不熟悉csvkit但似乎你没遍历你的行,和items只是行。也不能用type(items) == int检查类型,因为items是元组。相反,你需要循环您的项目,并与str.isdigit

for items in header: 
    for it in items : 
     if it.isdigit(): 
     print it 

检查或者你可以使用filter例如:

>>> filter(lambda x: x.isdigit(),['101','4/14/2015','1','21']) 
['101', '1', '21'] 

,或者您也可以使用列表理解:

[it if it.isdigit() for items in header for it in items]