Yep, there is!
For python 2:
print r'your string'.decode('string_escape')
For python 3, you need to transform it as bytes, and then use decode:
print(rb'your string'.decode('unicode_escape'))
Note that this doesn't work in your case, since your symbols aren't escaped properly (even if you print them using the "normal" way, it doesn't work).
Your string should be like this:
rb'3\u00B0 \u00b1 0.2\u00B0 2\u03B8'
Note that if you need to transform a string to bytes in python, you can use the bytes function.
my_str = r'3\u00B0 \u00b1 0.2\u00B0 2\u03B8'
my_bytes = bytes(my_str, 'utf-8')
print my_bytes.decode('string_escape') # python 2
print(my_bytes.decode('unicode_escape')) # python 3
codecs.raw_unicode_escape_decode. Unfortunately your raw string contains invalid unicode escapes, hence it does not work (I'm referring to\u176?. They should be in the form\uXXXX)rbas prefix) and use.decode('unicode-escape'), but this again fails because\u176?is not a valid unicode escape.