我有一个这样的输入字符串:a1b2c30d40
,我想将该字符串标记为:a, 1, b, 2, c, 30, d, 40
.
我知道我可以一个一个地读取每个字符并跟踪前一个字符以确定我是否应该对其进行标记化(连续 2 位数字意味着不对其进行标记化)但是是否有更 pythonic 的方式做这个?
最佳答案
>>> re.split(r'(\d+)', 'a1b2c30d40')
['a', '1', 'b', '2', 'c', '30', 'd', '40', '']
关于模式:如注释所说,\d
表示“匹配一个数字”,+
是一个修饰符,表示“匹配一个或多个”,所以\d+
表示“匹配尽可能多的数字”。这被放入组 ()
中,因此 re.split
上下文中的整个模式意味着“使用尽可能多的数字作为分隔符拆分此字符串,另外捕获将分隔符匹配到结果中”。如果您省略组,您将得到 ['a', 'b', 'c', 'd', '']
。
关于python字符串拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843841/