将字符串转换为浮点错误

时间:2013-05-16 07:05:01

标签: python arrays csv

所以我试着运行这段代码:

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.....

我的问题是:我如何跳过它后面的日期和数字,只存储合法的花车。或者将内容存储在以逗号分隔的数组中?

当我尝试运行上面的代码时抛出错误:

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

谢谢!

4 个答案:

答案 0 :(得分:5)

只需跳过无法转换为float的值:

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

答案 1 :(得分:0)

如果它始终是第一个不是浮点数的值,你可以把它拿出来做:

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

答案 2 :(得分:0)

或者你可以搜索字符串中的/并传递if exists,就像这样

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

答案 3 :(得分:0)

number = []
for s in reader[1]:
   number.append(int(float(s)))

这会将字符串转换为精确浮点数