Vous pouvez utiliser Python propre générateur de jetons pour vérifier!
import tokenize
import io
line = b'0xbin()'
print(' '.join(token.string for token in tokenize.tokenize(io.BytesIO(line).readline) if token.type!=59))
Il imprime les jetons dans votre chaîne de caractères, séparés par des espaces. Dans ce cas, le résultat sera:
0xb in ( )
En d'autres termes, elle renvoie Faux car le nombre 11 (0xb
) n'est pas dans le vide d'un n-uplet (()
).
(Merci à Romain Odaisky pour ce qui suggère l'utilisation de l' tokenize
dans les commentaires!)
EDIT: Pour expliquer un peu le code de manière plus approfondie: l' tokenize
fonction attend l'entrée dans un peu bizarre format, io.BytesIO(line).readline
est une fonction qui transforme une séquence d'octets en quelque chose d' tokenize
peuvent lire. tokenize
alors tokenizes et renvoie à une série d' namedtuple
s; nous prenons la chaîne de caractères représentant chacun et de se joindre à eux avec des espaces. L' type != 59
partie est utilisée pour ignorer l'encodage spécificateur qui seraient autrement apparaître au début.