2011-04-13 96 views
0

可能重复:
Converting a string that represents a list, into an actual list object.转换字符串列出

喜,

我在这个格式的字符串:

>>> x="(174,185)" 
>>> x 
'(174,185)' 

我怎么能转换这个字符串列出所以t我可以访问索引0为174和索引1为185?我正在使用Python 2.5 & Win XP。 我尝试了几种方法,但效果不佳。感谢您的建议。 TQ

>>> y=x.split(",") 
>>> y 
['(174', '185)'] 
>>> y[0] 
'(174' 
>>> [int(x) for x in x.split(",")] 
Traceback (most recent call last): 
    File "<pyshell#18>", line 1, in <module> 
    [int(x) for x in x.split(",")] 
ValueError: invalid literal for int() with base 10: '(174' 
>>> 

回答

3

你可以试试这个

y=x[1:-1].split(",") 

是分裂

>>> x="(174,185)" 
>>> map(int, x[1:-1].split(',')) 
[174, 185] 

之前剥去括号你也可以使用literal_eval如果你有python2.6的+

>>> from ast import literal_eval 
>>> literal_eval(x) 
(174, 185) 
>>> 
+0

tq,这个作品很棒!一旦获得列表,就可以访问索引。 – maximus 2011-04-13 07:08:52

+0

btw,x [1:-1]是什么意思? tq – maximus 2011-04-13 07:15:50

+0

是的,我明白你的意思了,你只是在parens中取int值并用逗号分隔它。大。 :) – maximus 2011-04-13 07:25:12