Maison >développement back-end >Tutoriel Python >Quelle est la différence entre les préfixes de chaîne Python « u », « r » et « ur » ?

Quelle est la différence entre les préfixes de chaîne Python « u », « r » et « ur » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 10:03:11772parcourir

What's the Difference Between Python String Prefixes

Les nuances des préfixes de chaîne : "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.

Ce qu'impliquent les 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.

Différenciation des préfixes "u", "r" et "ur"

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.

Conversion entre les types de chaînes

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().

Encodages et préfixes de chaîne

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn