【发布时间】:2021-11-29 15:08:48
【问题描述】:
我有一个问题,我找不到原因。 我想把字符串分成3部分,条件是“整数+字母+*(可选)” 数字为一位时效果很好,但数字为两位时就不行了。
这是我的代码:
import re
dartResult = '10S*3T2D*'
dartresult = re.split('(\d)',dartResult)
dartresult=[i for i in dartresult if i != ""]
score = []
for i in range(len(dartresult)):
try:
if int(dartresult[i]):
score.append(["".join(dartresult[i:i+2])])
elif int(dartresult[i]) and int(dartresult[i+1]): #in case the number is two digits
score.append(["".join(dartresult[i:i+3])])
except:
pass
print(dartresult)
print(score)
这就是结果。
['1', '0', 'S*', '3', 'T', '2', 'D*']
[['10'], ['3T'], ['2D*']]
如果您告诉我是否有更好的方法根据上述条件划分字符串,那就太好了。
【问题讨论】:
-
\d仅指单个字符,这就是为什么它只捕获一个数字。你的意思是\d+,它会占用尽可能多的连续数字? -
为什么
S*会消失?