s = ['my', 'name']
Chcę zmienić 1 literę każdego elementu w Wielkie litery.jak zmienić wielkość litery pierwszej litery?
s = ['My', 'Name']
s = ['my', 'name']
Chcę zmienić 1 literę każdego elementu w Wielkie litery.jak zmienić wielkość litery pierwszej litery?
s = ['My', 'Name']
Można użyć metody capitalize():
s = ['my', 'name']
s = [item.capitalize() for item in s]
print s # print(s) in Python 3
ten wypisze:
['My', 'Name']
Można użyć 'my'.title()
który powróci 'My'
.
przeboleć całą listę, po prostu map nad nim tak:
>>> map(lambda x: x.title(), s)
['My', 'Name']
Właściwie .title()
sprawia, że wszystkie słowa zaczynają się wielką literą. Jeśli chcesz ściśle ograniczyć pierwszą literę, użyj zamiast tego capitalize()
. (To robi różnicę na przykład w „tego słowa” zostanie zmieniona na obu This Word
lub This word
)
, a także różnica między Frankiem a Frankiem - jak jest tutaj odnotowane http://op.to/How.To.Capitalize.First.Letter+ –
Ponadto, 'str.title' jest prostszym sposobem na określenie' lambda x: x.title() '. – trss
Można użyć
for i in range(len(s)):
s[i]=s[i].capitalize()
print s
Nie potrzebujesz 'temp', nic nie robi i tak samo jest z' list [i] = list [i] .capitalize() '- który działałby tylko wtedy, gdy lista OP o nazwie' s 'zostało zmienione na' list' - ale byłaby to zła praktyka, ponieważ spowodowałoby to ukrycie wbudowanej funkcji/typu o tej samej nazwie. Nie wiem, dlaczego umieszczono tam końcowy przecinek na wyciągu ... – martineau
to błąd literowy polegający na umieszczeniu tam przecinka. – Kracekumar
To chyba nie ma znaczenia, ale warto to wykorzystać zamiast capitalize()
lub title()
metody smyczkowych, ponieważ oprócz uppercasing pierwszą literę, ale także małe litery resztę napisu (i to nie robi):
s = map(lambda e: e[:1].upper() + e[1:] if e else '', s)
+1: ładny połów; jednak dlaczego wyrażenie "if s else" "? Aby uniknąć konkatenacji pustych łańcuchów? Uważam, że to przedwczesna optymalizacja. – tzot
@ ΤΖΩΤΖΙΟΥ: Dzięki. Ta część jest głównie dlatego, że po prostu poprawiłem moją odpowiedź na podobne [pytanie] (http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-charactero-of-a-string-in- python/3847369 # 3847369). Wolę myśleć o nim jako o programowaniu defensywnym, ponieważ może on obsłużyć element listy będący "Brak" (tak, nie, nie ma go ze względu na obawę, że pusty ciąg znaków jest mniejszy niż optymalny). – martineau
Myślę, że obsługa "Brak" w ten sposób jest złą praktyką. Wolałbym mieć wyjątek podniesiony w tym przypadku, niż milczący (prawdopodobnie błędny) pusty ciąg znaków. – dbkaplun
Zarówno .capitalize() i .title() zmienia othe r litery w łańcuchu na małe litery.
Oto prosta funkcja, która zmienia tylko pierwszą literę na wielką i pozostawia resztę bez zmian.
def upcase_first_letter(s):
return s[0].upper() + s[1:]
+1 dzięki za sugestię wbudowanych funkcji! –
Nie zmienia to pierwszej litery _ego elementu element_ na liście pokazanej w pytaniu OP. – martineau
Chociaż LC, '[i [0] .upper() + i [1:] dla i in s]' –
capitalize nie robi tego, o co prosi OP. capitalize spowoduje także, że małe litery nie będą pierwszymi literami – lurscher
tak, ta odpowiedź jest myląca: ''naMe'.capitalize() ==' Name'' – Milimetric