Può sembrare trovare una funzione di sottostringa in Python.
Diciamo che voglio produrre i primi 100 caratteri in una stringa, come posso farlo?
Voglio farlo anche in sicurezza, valutando che se la stringa è di 50 caratteri non dovrebbe fallire.
Può sembrare trovare una funzione di sottostringa in Python.
Diciamo che voglio produrre i primi 100 caratteri in una stringa, come posso farlo?
Voglio farlo anche in sicurezza, valutando che se la stringa è di 50 caratteri non dovrebbe fallire.
Risposte:
print my_string[0:100]
print 'foo'[:100](nota che len('foo')è 3, quindi anche quando foo[100]non funziona, funziona)
Dal tutorial di Python :
Gli indici di fetta degeneri vengono gestiti con garbo: un indice troppo grande viene sostituito dalla dimensione della stringa , un limite superiore più piccolo del limite inferiore restituisce una stringa vuota.
Quindi è sicuro da usare x[:100].
Per rispondere alla preoccupazione di Philipp (nei commenti), lo slicing funziona bene anche per le stringhe Unicode
>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ
Se vuoi eseguire il codice sopra come uno script, metti questa riga in alto
# -*- coding: utf-8 -*-
Se il tuo editor non salva in utf-8, sostituisci la codifica corretta
ςe σsono la stessa lettera :-)
greek_alphabetallora :)
Il taglio degli array è fatto con [first:last+1].
Un trucco che tendo a usare molto è indicare informazioni aggiuntive con i puntini di sospensione. Quindi, se il tuo campo è di cento caratteri, userei:
if len(s) <= 100:
print s
else:
print "%s..."%(s[:97])
E sì, lo so che ()in questo caso è superfluo per l' %operatore di formattazione, è solo il mio stile.
La maggior parte degli esempi precedenti solleverà un'eccezione nel caso in cui la stringa non sia abbastanza lunga.
Un altro approccio è usare
'yourstring'.ljust(100)[:100].strip().
Questo ti darà i primi 100 caratteri. Potresti ottenere una stringa più breve nel caso in cui gli ultimi caratteri della stringa siano spazi.
La formattazione delle stringhe utilizzando %è un ottimo modo per gestirlo. Ecco alcuni esempi.
Il codice di formattazione viene '%s'convertito '12345'in una stringa, ma è già una stringa.
>>> '%s' % '12345'
'12345'
'%.3s' specifica di utilizzare solo i primi tre caratteri.
>>> '%.3s' % '12345'
'123'
'%.7s'dice di usare i primi sette caratteri, ma sono solo cinque. Nessun problema.
>>> '%.7s' % '12345'
'12345'
'%7s' utilizza fino a sette caratteri, riempiendo i caratteri mancanti con spazi a sinistra.
>>> '%7s' % '12345'
' 12345'
'%-7s' è la stessa cosa, tranne riempire i caratteri mancanti a destra.
>>> '%-7s' % '12345'
'12345 '
'%5.3' dice usa i primi tre caratteri, ma riempilo con spazi a sinistra per un totale di cinque caratteri.
>>> '%5.3s' % '12345'
' 123'
Stessa cosa tranne il riempimento a destra.
>>> '%-5.3s' % '12345'
'123 '
Può gestire anche più argomenti!
>>> 'do u no %-4.3sda%3.2s wae' % ('12345', 6789)
'do u no 123 da 67 wae'
Se hai bisogno di ancora più flessibilità, str.format()è disponibile anche. Ecco la documentazione per entrambi.
[start:stop:step]
Quindi, se vuoi prendere solo 100 primi caratteri, usa your_string[0:100]o your_string[:100]
Se vuoi prendere solo il carattere in posizione pari, usa your_string[::2]
I "valori predefiniti" per l'inizio è 0, per stop - len della stringa, e per il passo - 1. Quindi quando non ne fornisci uno e metti ':', lo userà come valore predefinito.