import re
text = "Score 1 and 2 sometimes, often 1 and 1/2, or 2.5 or 3 and 1/3."
matches = re.findall(r'((\d*\.?\d+(?:\/\d*\.?\d+)?)(?:\s+and\s+(\d*\.?\d+(?:\/\d*\.?\d+)?))?)', text)
result = []
for x,y,z in matches:
if '/' in x:
result.append(x)
else:
result.extend(filter(lambda x: x!="", [y,z]))
print( result )
# <1>, <2>, <1 and 1/2>, <2.5>, <3 and 1/3>
aW1wb3J0IHJlCgp0ZXh0ID0gIlNjb3JlIDEgYW5kIDIgc29tZXRpbWVzLCBvZnRlbiAxIGFuZCAxLzIsIG9yIDIuNSBvciAzIGFuZCAxLzMuIgoKbWF0Y2hlcyA9IHJlLmZpbmRhbGwocicoKFxkKlwuP1xkKyg/OlwvXGQqXC4/XGQrKT8pKD86XHMrYW5kXHMrKFxkKlwuP1xkKyg/OlwvXGQqXC4/XGQrKT8pKT8pJywgdGV4dCkKCnJlc3VsdCA9IFtdCmZvciB4LHkseiBpbiBtYXRjaGVzOgogICAgaWYgJy8nIGluIHg6CiAgICAJcmVzdWx0LmFwcGVuZCh4KQogICAgZWxzZToKICAgIAlyZXN1bHQuZXh0ZW5kKGZpbHRlcihsYW1iZGEgeDogeCE9IiIsIFt5LHpdKSkKCnByaW50KCByZXN1bHQgKQoKIyA8MT4sIDwyPiwgPDEgYW5kIDEvMj4sIDwyLjU+LCA8MyBhbmQgMS8zPg==