import re
data = 'temp1:        +31.0\xb0C  (crit = +107.0\xb0C)'
temp_re = re.compile(
    '(temp1:)\\s+(\\+|-)(\\d+\\.\\d+)\xb0C\\s+\\(crit\\s+=\\s+(\\+|-)(\\d+\\.\\d+)\xb0C\\).*'
    , flags=re.UNICODE)
How to portably parse the (Unicode) degree symbol with regular expressions?