117 votes

En Python, que signifie "chaîne" précédant un littéral de chaîne?

Je l'ai vu pour la première fois utilisé dans la construction des expressions régulières sur plusieurs lignes comme argument d'une méthode d' re.compile, donc, je suppose que le "r" est l'acronyme de l'expression rationnelle. Par exemple:

regex = re.compile(
    r'^[A-Z]'
    r'[A-Z0-9-]'
    r'[A-Z]$', re.IGNORECASE
)

Mais j'ai joué un peu avec des caractères différents et a constaté que il a également travaillé pour l'Unicode repère "u", et qu'il n'a pas à être un argument de méthode. Par exemple:

s = (
    u'The'
    u'quick'
    u'brown'
    u'fox'
)

le résultat serait à la chaîne Unicode: u'Thequickbrownfox'.

J'ai aussi tombé sur un autre personnage qui a permis "b". Je ne suis familier avec "u" sens de l'Unicode. C'est quoi les "r" et "b") signifie, et il y a d'autres marqueurs? Je vais avoir un moment difficile la recherche de la documentation pour la réponse, car je ne sais pas ce qu'ils sont officiellement appelés. (Je devine: "b" signifie d'octets ou de caractères codés sur un octet)

158voto

L' r signifie que la chaîne est d'être traitée comme une chaîne brute, ce qui signifie que tous les codes d'échappement seront ignorés.

Pour un exemple:

'\n' sera considérée comme un caractère de saut de ligne, alors que r'\n' seront traités comme les personnages \ suivie par n.

Lorsqu'un 'r' ou 'R' préfixe est présent, un personnage à la suite d'une barre oblique inverse est inclus dans la chaîne sans changement, et tous les anti-slash sont laissés dans l' chaîne de caractères. Par exemple, la chaîne littéral r"\n" se compose de deux personnages: une barre oblique et d'un minuscules 'n'. Chaîne de cotes peuvent être par un antislash, mais l' barre oblique inverse reste de la chaîne; pour exemple, r"\"" est une chaîne valide littéral composé de deux caractères: une barre oblique et un double guillemet; r"\" n'est pas la validité d'une chaîne littérale (même un chaîne brute ne peut pas se terminer en un nombre impair des barres obliques inverses). Plus précisément, une brute la chaîne ne peut pas terminer en une seule barre oblique inverse (depuis la barre oblique inverse serait échapper à la citation suivante de caractères). Notez aussi qu'une seule barre oblique inverse suivi par un saut de ligne est interprété comme ces deux personnages dans le cadre de la chaîne, non pas comme une continuation de ligne.

Source: Python littéraux de chaîne

30voto

Nate Points 8984

Cela signifie que les fuites ne seront pas traduites. Par exemple:

 r'\n'
 

est une chaîne avec une barre oblique inverse suivie de la lettre n . (Sans les r ce serait une nouvelle ligne.)

b correspond à chaîne d'octets et est utilisé dans Python 3, où les chaînes sont au format Unicode par défaut. En Python 2.x, les chaînes étaient des chaînes d'octets par défaut et vous utiliseriez u pour indiquer Unicode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X