2011-12-13 73 views
4

我需要在Python中将字符串'(2,3,4),(1,6,7)'转换为元组列表[(2,3,4),(1,6,7)]。 我想分割每',',然后使用for循环,并追加每个元组到一个空的列表。但我不太清楚如何去做。 提示,任何人?将字符串转换为元组列表

+0

可能重复的[Python的转换格式化的字符串列表](http://stackoverflow.com/questions/3622643/python-convert-formatted-string-to-list) – eumiro

回答

7
>>> list(ast.literal_eval('(2,3,4),(1,6,7)')) 
[(2, 3, 4), (1, 6, 7)] 
+0

+1即将发布类似的解决方案,但包装s引入[]并使用eval。这看起来好多了。 – soulcheck

+0

我想在没有ast.literal_eval的情况下执行此操作。 –

+0

@Linus:为什么?... –

2

只是为了完整性:soulcheck的解决方案,符合楼主的要求,以避免ast.literal_eval:

def str2tupleList(s): 
    return eval("[%s]" % s) 
2

没有AST或EVAL:

def convert(in_str): 
    result = [] 
    current_tuple = [] 
    for token in result.split(","): 
     number = int(token.replace("(","").replace(")", "")) 
     current_tuple.append(number) 
     if ")" in token: 
      result.append(tuple(current_tuple)) 
      current_tuple = [] 
    return result 
相关问题