[Python] Re: doppio backslash non va
Sandro Dentella
sandro a e-den.it
Sab 3 Feb 2007 15:29:52 CET
Dopo la mail di Nicola che mi pareva chiarissima (complimenti Nicola!) non
pensavo di dovere aggiungere nulla... ma visto che il problema rimane provo
a cimentarmi con la risposta...
1. un amico mi diceva, e ne ho fatto tesoro, che in informatica non si può
avere una comprensione parziale, del tipo 'capirò meglio questa parte
dopo intanto cogliamo il senso'. Mi spiego
a = r'\x'
non procedere se non capisci cosa sia quella piccola 'r'
Analogamente per la parola 'proteggere', se non la comprendi non
capirai cosa significhi che la prima \ serve per proteggere
l'interpretazione della seconda, ovvero fare in modo che la seconda
venga interpretata come carattere semplice e non come modificatore del
modo di interpretare il carattere successivo.
2. ascii code 92
> >>> chr(92)
> '\\'
>
> Dalli con due caratteri!
>
> >>> print chr(92)
> \
man ascii o se non hai un sistema linux a disposizione quarda qui:
http://www.pluto.it/files/ildp/man/man7/ascii.7.html, vai al Decimal 92
e ci trovi:
134 92 5C \ '\\'
Qui python non c'entra eppure ecco tornare il fatto che il carattere
'\' viene *rappresentato* così '\\'
quindi a = r'\x'è equivalente ad a = '\\x'
>>>print len(a), ord(a[0]), ord(a[1])
2 92 120
mostra senza più dubbio che a è di due caratteri il cui primo è \ ed il
secondo x (la cui codifica decimale è 120), ma che per "scrivere" \
servono due caratteri nel modo normale o uno nel modo 'raw' (la r...),
e siccome ne servono due per chiarezza quando chiedi all'interprete
cosa c'è in a ti mostra quello che ci devi scrivere.
Sintesi. Ti disorienta che:
* per scrivere un carattere ne servan due
* che dove ne servan due a volte (modo 'r') ne basti uno
* che >>> print a e >>> a rappresentino il dato in modod
differente
vuoi scrivere 0f -> \xof?
>>> a = '\\x%s' % '0f'
>>> print a
\x0f
Se hai ancora problemi, fidati che python queste cose le capisce, e
semmai posta il codice che non funziona...
sandro
*;-)
PS: t'è andata bene che non ti stai ciemntando con il tcl, c'è un caso
celebre che non ricordo dove stia, in cui servono 16 o 32 '\' per ottenere
quello che si desidera...
Maggiori informazioni sulla lista
Python