Altro
Come capitalizzare la prima lettera di ogni parola in una stringa?
s = 'the brown fox'
...fare qualcosa qui...
s
dovrebbe essere :
'The Brown Fox'
Qual è il modo più semplice per farlo?
526
3
Il metodo
.title()
di una stringa (sia ASCII che Unicode va bene) fa questo:Tuttavia, fate attenzione alle stringhe con apostrofi incorporati, come indicato nella documentazione.
L'algoritmo usa una semplice definizione indipendente dalla lingua di una parola come gruppi di lettere consecutive. La definizione funziona in molti contesti, ma significa che gli apostrofi nelle contrazioni e nei possessivi formano i confini delle parole, il che potrebbe non essere il risultato desiderato:
Solo perché questo genere di cose è divertente per me, ecco altre due soluzioni.
Dividere in parole, siglare ogni parola dai gruppi divisi, e ricongiungersi. Questo cambierà lo spazio bianco che separa le parole in un unico spazio bianco, non importa quale fosse.
EDIT: Non ricordo cosa stavo pensando quando ho scritto il codice di cui sopra, ma non c'è bisogno di costruire una lista esplicita; possiamo usare un'espressione generatrice per farlo in modo pigro. Quindi ecco una soluzione migliore:
Usare un'espressione regolare per far corrispondere l'inizio della stringa, o lo spazio bianco che separa le parole, più un singolo carattere non spaziale; usare le parentesi per contrassegnare i gruppi di corrispondenza". Scrivete una funzione che prenda un oggetto match, e restituisca il gruppo match degli spazi bianchi invariato e il gruppo match dei caratteri non spaziali in maiuscolo. Poi usate
re.sub()
per sostituire i pattern. Questa non ha i problemi di punteggiatura della prima soluzione, né rifà lo spazio bianco come la mia prima soluzione. Questa produce il miglior risultato.Sono contento di aver ricercato questa risposta. Non avevo idea che
re.sub()
potesse prendere una funzione! Si può fare un'elaborazione non banale all'interno dire.sub()
per produrre il risultato finale!Se str.title() non funziona per voi, fate voi stessi la capitalizzazione.
Una parola sola:
Esempio chiaro: