我想将u'229, 255, 66'
转换为(229, 255, 66)
有一种非常简单的方法吗?或者我需要拆分,转换为int等...
答案 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(',')))