Python字符串分割
我有一个输入字符串,比如说:a1b2c30d40
,我想把这个字符串分成这样:a, 1, b, 2, c, 30, d, 40
。
我知道我可以一个一个字符地读取,并且记住上一个字符,以判断我是否应该把它分开(如果有两个数字连在一起,就不分开),但是有没有更符合Python风格的方法来做到这一点呢?
1 个回答
13
>>> re.split(r'(\d+)', 'a1b2c30d40')
['a', '1', 'b', '2', 'c', '30', 'd', '40', '']
关于这个模式:正如评论所说,\d
的意思是“匹配一个数字”,而+
是一个修饰符,表示“匹配一个或多个”,所以\d+
的意思就是“尽可能多地匹配数字”。这个模式被放在一个括号()
里,所以在re.split
的上下文中,整个模式的意思是“用尽可能多的数字作为分隔符来分割这个字符串,同时把匹配到的分隔符也放到结果里”。如果你不使用括号,结果就会变成['a', 'b', 'c', 'd', '']
。