2015-06-03 58 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]