2011-04-27 86 views
2

我想解析python中的字符串。示例字符串是由空格分隔的四个数值。我想解析并转化为浮点值。我正在处理的代码如下。当我调试代码。它永远不会进入else块?缺点是什么?python中的字符串解析

def stringToQuaternion(self, str): 
     s = '' 
     list = [] 
     for i in range (0, len(str)): 
      if (str[i] != string.whitespace): 
       s += str[i] 
      else: 
       list.append(float(s)) 
       s = '' 
     return Quadro(list[0], list[1], list[2], list[3]) 

回答

7

“如果这很难,你这样做是错误的。 “ -ME

Quadro(*[float(x) for x in S.split()]) 
2

你是比较str[i],这是一个性格,string.whitespace,它由几个字符。这意味着str[i]string.whitespace永远不可能相等。

您可以改用str[i] in string.whitespace或更好的str[i].isspace()

(作为一个方面说明,不命名Python中的变量str,因为这将阴影内置式的名称。)

0

你可能想str[i] in string.whitespace而非!=。然而,像这样的明确的循环不是很Pythonic。试试这个更地道做法:

def stringToQuaternion(self, s): 
    l = [float(w) for w in s.split()] 
    return Quadro(l[0], l[1], l[2], l[3]) 

(最好不要使用strlist作为变量名的那些内置的数据类型)

语法func(*l)解压在一个列表中的项目l和将它们作为单个参数传递给函数。更简单一点,如果有点神秘:

def stringToQuaternion(self, s): 
    return Quadro(*[float(w) for w in s.split()])