2010-12-11 17 views
14

J'ai la chaîne U, son contenu est variable. Je voudrais en faire une chaîne brute. Comment je vais à ce sujet?Python Raw Strings

Quelque chose de similaire à la méthode r ''.

U = str(var) 
+6

Les chaînes brutes sont simplement une syntaxe différente lors de la définition d'une constante de chaîne. Qu'est-ce que vous voulez en particulier de var qui vous fait penser à utiliser des chaînes brutes? –

+1

Utilisez-vous Python 2 ou Python 3? Si Python 3, posez-vous peut-être des questions sur le type 'bytes'? –

Répondre

17

Les chaînes brutes ne s'appliquent qu'aux littéraux de chaîne. ils existent pour que vous puissiez exprimer plus facilement les chaînes qui seraient modifiées par le traitement de la séquence d'échappement. Cela est particulièrement utile lors de l'écriture d'expressions régulières ou d'autres formes de code dans des littéraux de chaîne. Si vous voulez une chaîne Unicode sans traitement d'échappement, il suffit de le préfixer avec ur, comme ur'somestring'.

+6

Je ne m'attendrais pas à ce que @TokenMacGuy le sache, mais ils sont également utiles pour définir des chemins sous Windows qui utilisent la barre oblique inverse comme séparateur dans les chemins, tels que 'r'C: \ Python27 \ Tools \ Scripts \ 2to3. py'' – martineau

+8

Hélas, TokenMacGuy est juste le nom. Ma machine principale exécute des fenêtres. la raison * réelle * que je n'utilise pas de chaînes brutes pour les chemins de fichiers est parce que je n'ai jamais codé en dur les chemins. – SingleNegationElimination

35

Les chaînes brutes sont et non un type de chaîne différent. Ils sont une manière différente de décrire une chaîne dans votre code source. Une fois la chaîne créée, c'est ce qu'elle est.

+6

+1 pour l'usage rare et précis de "c'est ce qu'il est" – LoveMeSomeCode

+0

c'est en fait faux. Il y a une autre réponse ici avec la réponse correcte: "les cordes brutes n'échappent rien à l'intérieur d'elles". – igorsantos07

26

Je crois que ce que vous cherchez est la fonction str.encode ("string-escape"). Par exemple, si vous avez une variable que vous voulez « chaîne brute »:

a = '\x89' 
a.encode('unicode_escape') 
'\\x89' 

Remarque: Utilisez string-escape pour les versions 2.x python et plus

je cherchais une solution similaire et a trouvé la solution via: casting raw strings python

+0

c'est la solution. – erikbwork

+4

Sur python 3.5.1: 'LookupError: encodage inconnu: string-escape' – nnyby

+0

@nnyby Utilise' unicode_escape' à la place –