2014-06-06 13 views
27

Come troncare una stringa utilizzando str.format in Python? È possibile?Come troncare una stringa usando str.format in Python?

c'è un parametro width menzionato nel Format Specification Mini-Language:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] 
... 
width  ::= integer 
... 

Ma specificando che a quanto pare funziona solo per imbottiture, non troncamento:

>>> '{:5}'.format('aaa') 
'aaa ' 
>>> '{:5}'.format('aaabbbccc') 
'aaabbbccc' 

quindi è più una larghezza minima di larghezza delle realtà.

So di poter tagliare le stringhe, ma i dati che elabisco qui sono completamente dinamici, inclusi la stringa di formato e gli argomenti che entrano. Non posso semplicemente andare e affettare esplicitamente uno.

risposta

48

Uso .precision invece:

>>> '{:.5}'.format('aaabbbccc') 
'aaabb' 

Secondo la documentazione del Format Specification Mini-Language:

Il precisione è un numero decimale che indica il numero di cifre da visualizzare dopo la virgola per un valore in virgola mobile formattato con 'f' e 'F' o prima e dopo il punto decimale per un valore in virgola mobile formattato con 'g' o 'G'. Per i tipi non numerici, il campo indica la dimensione massima del campo - in altre parole, quanti caratteri verranno utilizzati dal contenuto del campo. La precisione non è consentita per valori interi.

+0

Ah, in qualche modo mi sono perso. Fa il trucco, grazie! Accetta in arrivo. – famousgarkin

+0

C'è un builtin per mostrare anche un carattere di troncatura? Come un suffisso di ellissi quando i dati vengono troncati in questo modo? – ThorSummoner

+0

@ThorSummoner, penso che dovresti farlo manualmente. – falsetru

Problemi correlati