2012-02-06 60 views
1

我有一個包含的棋子座標的字符串的字符串:分割具有多個分離器

件= [Ka4Qb3Td7b4c4]

如何可以將字符串分割成一個列表中,由數字分離?

求購輸出:[ 'KA4', 'QB3', 'TD7', 'B4', 'C4']

回答

3

聞起來像作業,但很容易..

import re 
pieces = 'Ka4Qb3Td7b4c4' 
m = re.compile('[A-Za-z]{1,2}\d+') 
print m.findall(pieces) 

產量的影響。 。

['Ka4', 'Qb3', 'Td7', 'b4', 'c4'] 
+1

我不打算髮布,因爲我認爲它是作業。尤其是如果提出的解決方案在問題上不適合任務。如果你不幫助他們,你如何期望人們學習? – synthesizerpatel 2012-02-06 23:02:16

+0

你的答案只是代碼。您可以*解釋*如何使用正則表達式分割字符串。這將會更有用。有關更詳細的推理,請參閱http://meta.stackexchange.com/a/10812/147331。 – Johnsyweb 2012-02-06 23:09:41

+1

在回答問題時,試圖弄清問題的深度總是很艱難的 - 通常當我看到500+代表的人時,我傾向於讓代碼更加簡潔,讓代碼自己討論。如果他們低於100分,我會進一步細化。我確實很欣賞這些反饋 - 讓我們有所思考。 – synthesizerpatel 2012-02-06 23:15:09

2

這個工作對我來說:

import re 
mylist = [] 
pieces = "Ka4Qb3Td7b4c4" 
for chunk in re.finditer("(.*?[0-9]{1})",pieces): 
    mylist.append(chunk.group(1)) 
print mylist 

你可能需要,如果有2個分隔符來調整正則表達式(我不是一個國際象棋的人......)

對於利益的緣故,我重新設計它的建議列表理解並同意它是更清潔:

import re 
pieces = "Ka4Qb3Td7b4c4" 
mylist = [ chunk.group(0) for chunk in re.finditer(".*?\d+",pieces) ] 
print mylist 
+1

這對於列表理解來說看起來非常好 – juliomalegria 2012-02-07 00:33:45

+1

好主意julio。 – 2012-02-07 03:50:49