我正在使用 re.split() 并尝试加入元素,但它不起作用。为什么?
I'm using re.split() and trying to join the elements but it doesn't work. Why is it?
我有一个问题,我找不到原因。
我想把字符串分成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 后紧跟一个 + 以捕获任何连续的数字字符。
为什么不简单地定义正则表达式中的所有元素?
import re
dartResult = '10S*3T2D*'
out = re.findall(r'\d+\w\*?', dartResult)
输出:
>>> out
['10S*', '3T', '2D*']
正则表达式:
\d+ # one or more digits
\w # one character (letters/digit/underscore), to restrict to letters use [a-zA-Z]
\*? # optionally, one "*" character
我有一个问题,我找不到原因。 我想把字符串分成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 后紧跟一个 + 以捕获任何连续的数字字符。
为什么不简单地定义正则表达式中的所有元素?
import re
dartResult = '10S*3T2D*'
out = re.findall(r'\d+\w\*?', dartResult)
输出:
>>> out
['10S*', '3T', '2D*']
正则表达式:
\d+ # one or more digits
\w # one character (letters/digit/underscore), to restrict to letters use [a-zA-Z]
\*? # optionally, one "*" character