Python:如何按组拆分字符串字母数字与数字
Python: how to split string by groups Alpha-numeric vs numeric
假设我有这样的字符串:
"H39_M1", "H3_M15", "H3M19", "H3M11", "D363_H3", "D_128_H17_M50"
如何将它们每个拆分成一个子字符串列表? 像这样:
["H39", "M1"], "[H3, "Min15"], ["H3","M19"], ["H3","M11"], ["D363","H3"], ["D128","H17","M50"]
及之后:交换字母数字组和数字组的位置,
像这样:
["39H", "1M"], "[3H, "15Min"], ["3H","19M"], ["3H","11M"], ["363D","3H"],["128D","17H","50M"]
如您所见,数字组和字母数字组的长度有所不同。 “_”下划线也可以分隔它们。
我可能建议在这里使用 re.findall
和 re.sub
:
inp = "H3M19"
inp = re.sub(r'([A-Z]+)([0-9]+)', r'', inp)
parts = re.findall(r'[0-9]+[A-Z]+', inp)
print(parts)
这会打印:
['3H', '19M']
第一步 re.sub
将 H3M19
转换为 3H19M
,方法是捕获字母和数字对,然后交换它们。然后,我们使用 re.findall
在交换的输入中找到所有 number/letter 对。