2012-10-08 23 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