2013-08-11 11 views
5

Questa è una stringa valida formato pitone:Cosa significa "h" in una stringa di formato Python?

>>> wierd_format = '[%27he]' 
>>> print wierd_format % 2.5 
[  2.500000e+00] 

Ma non è:

>>> bad_format = '[%20qe]' 
>>> print bad_format % 2.5 
Traceback (most recent call last): 
    File "prog.py", line 5, in <module> 
    print bad_format % 2.5 
ValueError: unsupported format character 'q' (0x71) at index 4 

Chiaramente, h è un personaggio formato supportato. Tuttavia, lo documentation non menziona un identificatore h. Che cosa fa?

+0

[Ideone mostrando validità] (http://ideone.com/EfhqWK) – Eric

risposta

4

Dalla documentazione:

Un modificatore di lunghezza (h, l o L) può essere presente, ma viene ignorato in quanto non è necessario per Python - così ad esempio %ld è identico a %d.

+0

Chiaramente non vedenti. Grazie – Eric

+0

Nessun problema, succede :) –

3

Python Docs dire che è un modificatore di lunghezza.

Un modificatore di lunghezza (h, l o L) può essere presente, ma viene ignorato poiché non è necessario per Python. quindi ad es. % ld è identico a% d.

Essi sembrano uguali,

>>> "[%he]" %2.5 
'[2.500000e+00]' 
>>> "[%le]" %2.5 
'[2.500000e+00]' 
>>> "[%Le]" %2.5 
'[2.500000e+00]' 
+0

Whoops, sono cieco. Quel collegamento alla documentazione è più vecchio del mio, ma entrambi contengono la stringa – Eric

+0

@Eric: Grazie. Aggiornato al più recente. :) –

+1

@Eric: Potrei anche trovare il modificatore 'h' in TcL. Potrebbe esserci una relazione qui, ma non è sicuro. Ecco il [collegamento] (http://www.tcl.tk/man/tcl8.4/TclCmd/format.htm). Citato -> 'Se è h specifica che il valore numerico deve essere troncato a un valore a 16 bit prima della conversione. –