Evalúe las secuencias de escape literales UTF-8 en una cadena en Python3

Tengo una cadena de la forma:

s = '\\xe2\\x99\\xac' 

Me gustaría convertir esto en el carácter ♬ evaluando la secuencia de escape. Sin embargo, todo lo que he intentado resulta en un error o imprime basura. ¿Cómo puedo obligar a Python a convertir la secuencia de escape en un carácter Unicode literal?

Lo que he leído en otra parte sugiere que la siguiente línea de código debería hacer lo que quiero, pero da como resultado un UnicodeEncodeError.

 print(bytes(s, 'utf-8').decode('unicode-escape')) 

También probé lo siguiente, que tiene el mismo resultado:

 import codecs print(codecs.getdecoder('unicode_escape')(s)[0]) 

Ambos enfoques producen la cadena ‘â \ x99¬’, cuya impresión no se puede manejar posteriormente.

En caso de que haga alguna diferencia, la cadena se está leyendo desde un archivo codificado en UTF-8 y finalmente se enviará a un archivo codificado en UTF-8 diferente después del procesamiento.

...decode('unicode-escape') le dará la cadena '\xe2\x99\xac' .

 >>> s = '\\xe2\\x99\\xac' >>> s.encode().decode('unicode-escape') 'â\x99¬' >>> _ == '\xe2\x99\xac' True 

Necesitas decodificarlo. Pero para decodificarlo, codifíquelo primero con latin1 (o iso-8859-1 ) para preservar los bytes.

 >>> s = '\\xe2\\x99\\xac' >>> s.encode().decode('unicode-escape').encode('latin1').decode('utf-8') '♬'