【发布时间】:2021-04-22 03:09:00
【问题描述】:
这里我有一个包含11 数字的字符串。我需要将字符串拆分成长度为2, 2, 2, 3, 2 的块,这是我遵循的方法,也是我从stackoverflow 中找到的。
from itertools import islice
numbers = '01234567891'
it = iter(numbers)
n = [2, 2, 2, 3, 2]
s = '-'.join(''.join(islice(it, None, x)) for x in n)
print(s.split('-'))
['01', '23', '45', '678', '91']
上面的答案正是我想要的。
但我试图通过使用正则表达式来获得相同的结果,假设会有一种方便且更短的方法,但它并没有给我预期的结果。
这是我使用正则表达式的简单代码
import re
number = '01234567891'
splited = re.split(r'\d{2}\d{2}\d{2}\d{3}\d{2}', number)
print(splited)
如果有人可以帮助我找出我在正则表达式方法中做错了什么,那将不胜感激。
['', '']
【问题讨论】:
-
为什么要使用正则表达式?
-
我指定了正则表达式,因为我认为正则表达式是将字符串拆分为不同长度块的最佳候选者。还有其他更好的解决方案吗..?如果是,我会毫不犹豫地欢迎它。
标签: python python-3.x regex