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>