2013-05-16 44 views
0

所以我嘗試運行這段代碼:將字符串轉換爲浮點數錯誤

reader = list(csv.reader(open('mynew.csv', 'rb'), delimiter='\t')) 
print reader[1] 
number = [float(s) for s in reader[1]] 

內讀者[1]我有以下值:

'5/1/2013 21:39:00.230', '46.09', '24.76', '0.70', '0.53', '27.92', 

我試圖存儲每一個數值如下所示:

number[0] = 46.09 
number[1] = 24.09 
and so on..... 

我的問題是:我將如何跳過日期和它後面的數字和理由t存儲合法的浮游物。或者將內容存儲在用逗號分隔的數組中?

ValueError: invalid literal for float(): 5/1/2013 21:39:00.230 

感謝:

它,當我嘗試運行上面的代碼拋出一個錯誤!

+1

爲什麼不能'reader [1] [2:]'?如果可能的話,我也會把整個東西保存在內存中作爲一個列表 – jamylak

+0

您是否嘗試過[浮點(s)讀取[1] [1:]]? –

+0

閱讀器[1] [2:]作品非常感謝jamylak – user2353003

回答

5

只跳過不能被轉換爲float值:

number = [] 
for s in reader[1]: 
    try: 
     number.append(float(s)) 
    except ValueError: 
     pass 
+1

非常感謝你! – user2353003

0

如果它總是第一個值,這不是一個浮點數,你可以把它拿出來這樣做:

reader = list(csv.reader(open('mynew.csv', 'rb'), delimiter='\t')) 
print reader[1] 
number = [float(s) for s in reader[1][1:]] 
+0

*「跳過日期**和它後面的數字**」* – jamylak

+0

我有疑問。他的例子與此相矛盾。只需用'2:'替換'1:'即可。 – Noctua

0

或者你可以搜索用於/在串並通過是否存在,這樣的事情

my_list_results = [] 
my_list = ['5/1/2013 21:39:00.230', '46.09', '24.76', '0.70', '0.53', '27.92'] 
for m in my_list: 
    if '/' not in m: #if we don't find/
     my_list_results.append(m) 
print my_list_results 
0
number = [] 
for s in reader[1]: 
    number.append(int(float(s))) 

這會將字符串轉換爲精確浮點數

相關問題