2011-09-01 7 views
3

Existe-t-il un python équivalent à echo -e?Python équivalent à echo -e?

En d'autres termes, existe-t-il une fonction intégrée pour convertir r"\x50\x79\x74\x68\x6f\x6e" en "Python" en Python?

Modifier I a ajouté le préfixe « r », pour vous assurer que tout le monde comprend que je ne veux pas l'interpréteur python pour convertir cela. Je veux plutôt convertir cette chaîne de 24 caractères en une chaîne de 6 caractères.

+0

Où se trouve cette entrée venant de et comment le regardez-vous? –

+0

Cela vient en fait de la sortie de 'strace -xx'. –

+0

J'ai essayé de faire le montage en ajoutant le r mais vous m'avez battu quelques secondes. :) –

Répondre

10

La bonne façon de le faire, que je viens de découvrir est

>>> a = r"\x50\x79\x74\x68\x6f\x6e" 
>>> print a 
\x50\x79\x74\x68\x6f\x6e 
>>> a.decode('string_escape') 
'Python' 

Assurez-vous échappez les antislashs (ou en utilisant le préfixe « r » brut) lors du test de ce!

Références:

+0

Merci de mentionner la notation 'r', je ne m'en souvenais pas :) Rappelez-vous que c'est bien (et même encouragé) d'accepter votre propre réponse si vous décidez que c'est la meilleure. – Kos

+1

@Downvoter - Vous voulez commenter? –

3

Aucune conversion est nécessaire. Ils sont déjà la même chaîne

>>> "\x50\x79\x74\x68\x6f\x6e" == "Python" 
True 

Si vous en fait avez une autre chaîne "\\x50\\x79\\x74\\x68\\x6f\\x6e" qui contient en fait anti-slash ("\x50\x79\x74\x68\x6f\x6e" ne fait pas contiennent des anti-slash), alors vous feriez

>>> s 
'\\x50\\x79\\x74\\x68\\x6f\\x6e' 
>>> s.decode('string-escape') 
'Python'