2016-08-01 49 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 
相关问题