Python字符串分割

7 投票
1 回答
1019 浏览
提问于 2025-04-16 10:54

我有一个输入字符串,比如说: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', '']

撰写回答