[Python] Re: doppio backslash non va

Nicola Larosa nico a tekNico.net
Ven 2 Feb 2007 20:44:41 CET


SMZE wrote:
> Il problema è che se fai a='\\x' a varrà '\\x' mentre io vorrei che
> valga '\x' e basta. Con
> >>> a=r'\x'
> >>> a
> '\\x'
> 
> con print a otterrei quello che voglio. Ma posso assegnarlo ad una
> variabile? non penso.

Oh, l'eterna lotta tra ciò che appare, e ciò che è. Il noumeno, o il
fenomeno? Il genotipo, o il fenotipo? Chi avrà ragione, "a" o "print a"?
Cosa c'è *veramente* nella variabile "a"? Scopriamolo!

>>> a = '\\x'
>>> len(a)
2

Mmh... son due caratteri, non tre. Vediamo il secondo:

>>> a[1]
'x'

...e se il secondo è 'x', il primo è...

>>> a[0]
'\\'

Ma come! Ora il primo sono due?!?

>>> print a[0]
\

No, sembra essere uno solo...

>>> ord(a[0])
92

...e consiste nel valore (decimale) 92. Se lo ritrasformiamo in carattere:

>>> chr(92)
'\\'

Dalli con due caratteri!

>>> print chr(92)
\

No, dai, dev'essere per forza uno solo! Certo che quest'interprete è
proprio birbone! Ma... non sarà che cerca di essere d'aiuto, e mostra due
backslash invece di uno, perché è così che vanno scritti nelle stringhe?


-- 
Nicola Larosa - http://www.tekNico.net/

The compiler doesn't care if the person who forgot the curly brace
is wearing a black lace bra. -- Kathy Sierra, August 2006



Maggiori informazioni sulla lista Python