由于无错误,无法转换字符串

时间:2015-04-20 05:45:28

标签: python type-conversion nonetype

def draw_constellation_file(file_name):
  x = open(file_name)
  y = x.read()
  y = y.splitlines()
  for i in range(0, len(y)):
      a = y[i]
      b = a.split(',')
      aa = str(get_line_for_star_name(b[0]))
      cc = get_star_point_from_line(aa)
      return aa

get_star_point_from_line看起来像这样:

def get_star_point_from_line(stardata):
  stardata = stardata.split(',')
  x = float(stardata[0])
  y = float(stardata[1])
  return [x, y]

输出:

  

ValueError:无法将字符串转换为float:无

事情就是这样:stardata.split似乎没有分裂。我确定它与None有关。

有什么想法吗?

4 个答案:

答案 0 :(得分:-1)

“无”倾向于表示没有任何内容传递给相关函数。您应该确保传入的数据符合您的预期。

在这种情况下,stardata[0]stardata[1]可能不存在。话虽如此,您需要检查行号以了解哪个是问题。

答案 1 :(得分:-1)

此代码似乎有错误

def get_star_point_from_line(stardata):
  stardata = stardata.split(',')
  x = float(stardata[0]) //passing string value in float will cause an error
  y = float(stardata[1]) 
  return [x, y]

我认为参数stardata中的数据包含字符串值。

答案 2 :(得分:-1)

你正在通过aa = str(get_line_for_star_name(b[0])) 进入get_star_point_from_line(stardata):并显示只传递1个索引:b [0]。

如果b [0]不是一个完整列表,只有一个字符串,而不是指定x = float(stardata[0])y = float(stardata[1]),那么你试图将这些变量分配给不存在的索引。

如果b [0]是一个完整的字符串,它可能会以你想象的方式分裂。我会尝试使用split()代替split(',')然后使用rstrip(',')来分割它以删除逗号。

如果不知道最初做aa = str(get_line_for_star_name(b[0]))时列表的内容,很难确定问题。顺便说一句,将其转换为字符串,然后您尝试将其重新转换为浮点数,我认为这有点奇怪。

答案 3 :(得分:-1)

在draw_constellation_file中,你设置b = a.split(',')并将b [0]传递给get_line_for_star_name,b [0]将没有',',所以你可以发布get_line_for_star_name的代码来看看问题的原因