在Python中将'229,255,66'转换为(229,255,66)

时间:2011-12-05 08:57:42

标签: python

我想将u'229, 255, 66'转换为(229, 255, 66)

有一种非常简单的方法吗?或者我需要拆分,转换为int等...

4 个答案:

答案 0 :(得分:15)

简单的方法是使用功能ast.literal_eval(),它没有使用eval的安全问题:

>>> from ast import literal_eval
>>> literal_eval(u'229, 255, 66')
(229, 255, 66)

答案 1 :(得分:2)

内置函数eval()将返回一个元组,不需要拆分(根据你的问题)。

  

eval('299,255,66')

将返回

  

(229,255,66)

答案 2 :(得分:2)

确实,逗号上有split,并使用列表解析将int应用于结果:

In [1]: s = u'229, 255, 66'

In [2]: tuple(int(i) for i in  s.split(','))
Out[2]: (229, 255, 66)

map相当于列表理解(但目前被认为对某些人来说是“较少pythonic”。eval(s)会起作用但被认为是危险的,具体取决于字符串的来源。

答案 3 :(得分:1)

怎么样:

x = u'229, 255, 66'
p = tuple(map(int, x.split(',')))