2016-12-20 295 views
0

我的剧本是捡了字符串时,它不应该,我得到的Python,ValueError异常:无法将字符串转换为float:

ValueError: could not convert string to float: for line list_col.append(float(row[c].strip('"'))) in the code below

with open(fileTwoName) as f: 

    reader = csv.reader(f, delimiter=",") 
    fileTwoColumnNames = next(reader) 
    output_column .extend(fileTwoColumnNames[2:-1]) 
    number_of_columns = len(fileTwoColumnNames)-2 


    for c in range(2,number_of_columns+2): 
     list_col = [] 
     f.seek(1) 
     next(reader) 
     for row in reader: 
      list_col.append(float(row[c].strip('"'))) 

     list_col_name_wise = [] 
     for k in range(0, len(number_eng)): 
      list_col_name_wise.append(sum(list_col[start_row[k] - 1:start_row[k] - 1 + 1- total_case [k]])) 
     data.append(list_col_name_wise) 

我测试了它加入

if list_col == str: 
    list_col.append(float(row[c].strip('"'))) ` 

一切都输出好,但我需要我的data列表输出为浮动。有什么方法可以解释str和float吗?

+4

我怀疑你的数据格式不正确:在出错前添加一个'print row [c] .strip(''')'。 – TemporalWolf

+2

阅读错误:无法将字符串转换为浮动。 'row [c] .strip('“'')'是一个字符串,它应该只包含一个float和空格,否则'float(...)'将失败,并且出现错误, –

回答

1

您的数据格式不正确,您将得到空字符串''。您可以忽略它们,或添加一些默认值:

for row in reader: 
    try: 
     list_col.append(float(row[c].strip('"'))) 
    except ValueError: 
     # Empty string 
     if row[c].strip('" ') == '': 
      list_col.append(0.0) 
      # or 
      pass # ignore 
     else: 
      raise 

你只需要决定如何处理空字符串:追加了一些默认值或跳过他们。

+0

I在我的Ipython控制台中只能看到空白区域,但它确实会将某些数据输出为float。我能做些什么来解决这个问题,我对python非常陌生 – MiguelA

+0

@MiguelA你可以把你的问题的输出添加进去吗? – TemporalWolf

+0

不幸的是我的输出转到了一个非常大的.csv文件。在添加错误检查之后,控制台中的打印数据只是空白空白,它会持续一段时间,直到停止运行。 – MiguelA

0

通过您的意见看起来像你得到的东西到这个效果

>>> float(" ") 

Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    float(" ") 
ValueError: could not convert string to float: 
>>> 

,显然你不能从一个字符串漂浮物不包含任何号码下手。

你有2种选择,忽略了值,然后继续下一个,或使用默认值,如0或者其他方便的值,当出现这种情况

做任何的,这是非常简单的与尝试 - 除了

忽略它做

for row in reader: 
    try: 
     list_col.append(float(row[c].strip('"'))) 
    except ValueError: 
     print("Error with row",c,":",row[c]) 
     pass 

或使用默认值,而不是做

for row in reader: 
    try: 
     list_col.append(float(row[c].strip('"'))) 
    except ValueError: 
     print("Error with row",c,":",row[c]) 
     list_col.append(0.0) 

(打印是可选的)

+0

谢谢,这个解决方案也适用。 – MiguelA

相关问题