2016-08-01 70 views
0

我想將字符串u'123K拆分爲123K。我試過re.match("u'123K", "\d+")匹配數字和re.match("u'123K", "K")匹配的字母,但他們不工作。什麼是Pythonic的方式來做到這一點?將unicode字符串拆分爲包含數字和字母的組件

+0

如果字符串總是一些數字後跟一個字母,你可以使用nums,letter = string [: - 1],string [-1]' – IanAuld

+1

for're.match',該模式應該去首先,然後是你正在評估的字符串。你有它倒退 – xgord

回答

2

使用re.findall()找到所有的數字和字符:

>>> s = u'123K' 
>>> re.findall(r'\d+|[a-zA-Z]+', s) # or use r'\d+|\D+' as mentioned in comment in order to match all numbers and non-numbers. 
['123', 'K'] 

如果你是剛剛處理這個字符串,或者如果你只是想分裂從最後一個字符的字符串,你可以簡單地使用一個索引:

num, charracter = s[:-1], s[-1:] 
+0

短而甜! – tnabdb

+2

'r'\ d + | \ D +''較短。但是,規格不太清楚。 –

+0

@WiktorStribiżew是的,這是一個不錯的選擇! – Kasramvd

0

您還可以使用itertools.groupby方法,分組數字:

>>> import itertools as it 
>>> for _,v in it.groupby(s, key=str.isdigit): 
     print(''.join(v)) 


123 
K