Maison >développement back-end >Tutoriel Python >Quelle est la différence entre les préfixes de chaîne Python « u », « r » et « ur » ?
Dans le domaine des chaînes Python, une confusion surgit souvent concernant le but et fonctionnalité des préfixes de chaîne "u", "r" et "ur". Cet article vise à faire la lumière sur leurs rôles distincts et sur les subtilités des littéraux de chaîne brute.
Contrairement aux idées fausses courantes, il n'existe pas de type distinct de « chaîne brute ». Au lieu de cela, les « littéraux de chaîne brute » font référence à des chaînes préfixées par la lettre « r », telles que r'...' ou r"""...""". Ces littéraux diffèrent uniquement par leur gestion des barres obliques inverses ().
Dans les littéraux de chaîne normaux, une barre oblique inverse suivie d'un autre caractère déclenche généralement une séquence d'échappement, représentant des caractères spéciaux tels que des nouvelles lignes ou des tabulations. Cependant, les littéraux de chaîne brute interprètent la barre oblique inverse comme elle-même, sauf lorsqu'elle précède un guillemet simple ou double fermant qui autrement terminerait la chaîne.
Le préfixe "u" désigne une chaîne Unicode, qui est un objet Unicode de type unicode. Dans Python 2.*, u'...' représente une chaîne Unicode, tandis que '...' est une chaîne d'octets.
Le préfixe "r", comme indiqué précédemment, désigne une chaîne littérale brute. Il préserve littéralement les barres obliques inverses, ce qui le rend utile pour les expressions régulières ou lorsqu'il s'agit de chemins de fichiers Windows natifs. Dans Python 2.*, r'...' et r'''...''' produisent des chaînes d'octets.
Le préfixe "ur" combine les fonctionnalités de "u" et "r". , ce qui donne un littéral de chaîne Unicode brut. Les chaînes Unicode brutes sont particulièrement utiles lorsque vous travaillez avec des chemins de fichiers contenant des caractères Unicode.
Dans Python 2.*, il existe une distinction entre les chaînes d'octets et les chaînes Unicode. Pour convertir une chaîne Unicode en chaîne d'octets, on peut utiliser la méthode .encode(). Pour convertir une chaîne d'octets en chaîne Unicode, on peut utiliser la méthode .decode().
En Python 2.*, l'encodage d'une chaîne est déterminé par le codec utilisé pour décoder les données brutes d'octets (lors de la création de la chaîne) ou pour encoder les données Unicode (lors de la création de la chaîne). Le préfixe "u" n'affecte pas l'encodage de la chaîne Unicode résultante.
Dans Python 3.*, les chaînes sont Unicode par défaut et le préfixe "u" n'est plus nécessaire. De plus, les littéraux de chaîne brute ne sont pas nécessaires pour les expressions régulières car les barres obliques inverses ne sont pas traitées comme des séquences d'échappement dans les chaînes brutes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!