Python:如何按组将字符串拆分字母数字和数字

问题描述

让我们说我有以下字符串: "H39_M1","H3_M15","H3M19","H3M11","D363_H3","D_128_H17_M50"

如何将它们每一个都拆分为子字符串列表? 像这样:

["H39","M1"],"[H3,"Min15"],["H3","M19"],"M11"],["D363","H3"],["D128","H17","M50"]

及之后:切换字母数字组和数字组的位置, 像这样: ["39H","1M"],"[3H,"15Min"],["3H","19M"],"11M"],["363D","3H"],["128D","17H","50M"]

您可以看到,数字组和字母数字组的

长度有所不同。 也可以将“ _”下划线分开。

解决方法

我可能建议在此处将re.findallre.sub一起使用:

inp = "H3M19"
inp = re.sub(r'([A-Z]+)([0-9]+)',r'\2\1',inp)
parts = re.findall(r'[0-9]+[A-Z]+',inp)
print(parts)

此打印:

['3H','19M']

第一步re.sub通过捕获字母和数字对然后交换它们来将H3M19转换为3H19M。然后,我们使用re.findall在交换的输入中查找所有数字/字母对。