2010-11-19 10 views

Antwort

25

können Sie die capitalize() Methode verwenden:

s = ['my', 'name'] 
s = [item.capitalize() for item in s] 
print s # print(s) in Python 3 

Dieser Druck wird:

['My', 'Name'] 
+18

Großschreibung tut nicht, was OP fragt. Großschreibung wird auch Kleinbuchstaben machen Nicht-erste Buchstaben – lurscher

+6

Ja, diese Antwort ist irreführend: ''naMe'.capitalize() ==' Name'' – Milimetric

12

Sie können 'my'.title() verwenden, welche 'My' zurückkehren wird.

Um die komplette Liste verwinden, einfach darüber, wie diese Karte:

>>> map(lambda x: x.title(), s) 
['My', 'Name'] 

Eigentlich .title() alle Wörter mit Großbuchstaben beginnen macht. Wenn Sie den ersten Buchstaben streng begrenzen möchten, verwenden Sie stattdessen capitalize(). (Dies ist ein Unterschied, zum Beispiel in ‚diesem Wort‘ entweder geändert wird This Word oder This word)

+0

und auch der Unterschied zwischen Frank's und Frank'S - wie hier http://op.to/How.To.Capitalize.First.Letter+ –

+0

Auch 'str.title' ist eine einfachere Möglichkeit,' lambda x: x.title() 'anzugeben. – trss

0

Sie

verwenden können
for i in range(len(s)): 
    s[i]=s[i].capitalize() 
print s 
+1

Sie brauchen 'temp' nicht, es tut nichts und ist das selbe wie' liste [i] = list [i] .capitalize() '- was nur funktionieren würde, wenn die Liste des OP' s heißt 'wurde in' list' umbenannt - aber das wäre eine schlechte Übung, weil dies die eingebaute Funktion/den gleichen Namen verstecken würde. Nicht sicher, warum das abschließende Komma auf der Druckanweisung dort gesetzt wurde ... – martineau

+0

war es ein Tippfehler, Komma dort zu setzen. – Kracekumar

5

Es wahrscheinlich keine Rolle spielt, aber Sie könnten diese verwenden möchten, anstatt die capitalize() oder title() String-Methoden, da neben den ersten Buchstaben großgeschrieben, sie Kleinbuchstaben auch den Rest der Zeichenfolge (und dies nicht):

s = map(lambda e: e[:1].upper() + e[1:] if e else '', s) 
+0

+1: schöner Fang; Warum aber der 'if s else '' Ausdruck? Um eine Verkettung von leeren Strings zu vermeiden? Ich glaube, es ist eine vorzeitige Optimierung. – tzot

+0

@ ΤΖΩΤΖΙΟΥ: Danke. Dieser Teil ist hauptsächlich da, weil ich gerade meine Antwort auf eine ähnliche [Frage] geändert habe (http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-character-of-a-string-in- Python/3847369 # 3847369). Ich ziehe es vor, es als defensive Programmierung zu betrachten, da es mit einem Listenelement umgehen kann, das 'None' ist (also, nein, es ist nicht da, weil der leere String nicht optimal ist). – martineau

+1

Ich denke, die Handhabung von 'None' ist keine schlechte Übung. Ich hätte lieber eine Ausnahme in diesem Fall als die (möglicherweise falsche) leere Zeichenfolge still übergeben wurde. – dbkaplun

45

Beide .capitalize() und .title(), ändert die anderen r Buchstaben in der Zeichenfolge in Kleinbuchstaben.

Hier ist eine einfache Funktion, die nur den ersten Buchstaben in Großbuchstaben ändert und den Rest unverändert lässt.

def upcase_first_letter(s): 
    return s[0].upper() + s[1:] 
+0

+1 danke für die eingebauten Funktionen! –

+0

Dies ändert nicht den ersten Buchstaben jedes Elements in der Liste, die in der Frage des OP angezeigt wird. – martineau

+1

Obwohl LC, '[i [0] .upper() + i [1:] für i in s]' –

Verwandte Themen