import re
print(re.findall(r"[A-Z]+|\d+", "ABCAPITAL23JAN140CE"))
# Or converting to int
print([int(v) if v.isdigit() else v for v in re.findall(r"[A-Z]+|\d+", "ABCAPITAL23JAN140CE")])
import re
m = re.match(r"(\S*?)(\d+)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(\d+)(\S+)$", "ABCAPITAL23JAN140CE")
if m:
print(list(m.groups()))
def splitstring(s):
l=[s[0]]
for h in s[1:]:
H=h + l[-1][0]
if H.isdigit() or H.isalpha():
l[-1]+=h
else:
l.append(h)
return l
print(splitstring('ABCAPITAL23JAN140CE'))
st = 'ABCAPITAL23JAN140CE'
l = []
s = ""
for i in range(0,len(st)-1):
if (st[i].isnumeric() == st[i+1].isnumeric()) or (st[i].isalpha() == st[i+1].isalpha()):
s = s + st[i]
else:
s = s + st[i]
if s.isnumeric():
l.append(int(s))
else:
l.append(s)
s = ""
4条答案
按热度按时间dgiusagp1#
您可以将re.findall与
[A-Z]+|\d+
一起使用在regex101上查看匹配项
产出
另一个选项与4个捕获组匹配的数字和短路部分的月份一样
JAN
FEB
等...查看regex101上的捕获组匹配
产出
2hh7jdfx2#
envsm3lx3#
这个方法测试两个相邻的字符是否是相同的类型,如果是,那么连接字母,否则分裂。
输出:
2vuwiymt4#
导入重新打印(参考findall(r”[A-Z]+|\d+",“大写字母缩写2014年1月23日”))