2012-10-08 66 views
0

我试图分裂出一个列表,如标题:索引/拆分[“ABC:2”,“CDE:3”]

['ABC:2', 'CDE:1'] 

最后,我想之前分配位并在:之后对两个不同的变量进行迭代。

我正在使用Python 2.7。

+0

欢迎堆栈溢出!我们鼓励你[研究你的问题](http://stackoverflow.com/questions/how-to-ask)。如果你已经[尝试了某些东西](http://whathaveyoutried.com/),请将其添加到问题中 - 如果没有,请先研究并尝试您的问题,然后再回来。 – 2012-10-08 11:10:06

+0

你对格式有任何控制权吗?如果格式稍有不同,则可以使用JSON解析器。 – SDC

回答

5
>>> L = ['ABC:2', 'CDE:1'] 
>>> for i, j in (x.split(":") for x in L): 
...  print i, j 
... 
ABC 2 
CDE 1 
+0

这正是我所需要的,非常感谢。只在uni上做了3个月的python,之前没有遇到过这种格式。是列表理解?不管它是什么病都读了它! – chris

+0

@ user1710566,它被称为生成器表达式。语法的工作原理类似于列表理解,但它每次只产生一个结果,所以使用的内存少于创建临时列表 –

0

使用高阶函数(我感觉更舒服):

>>> xs = ['ABC:2', 'CDE:1'] 
>>> split_xs = map(lambda s : s.split(":"), xs) 
>>> for x, y in split_xs: 
... print(x, y) 
... 
ABC 2 
CDE 1 
+0

那么肯定应该使用'map(operator.methodcaller('split',':') ,xs)'? –

+0

@JonClements,这是更长和更复杂。后者困扰我更多。 – missingfaktor