2010-11-19 14 views

cevap

25

Sen capitalize() yöntemi kullanabilirsiniz

['My', 'Name'] 
+18

büyük harfle yazılanlar aynı zamanda ilk harf olmayan – lurscher

+6

harfleri de oluşturacaktır, bu cevap yanıltıcıdır: '' naMe'.capitalize() == 'Name' – Milimetric

12

Sen 'my'.title() kullanabilirsiniz 'My' dönecektir hangi.

basitçe böyle bitti map, tam listesi üzerinden almak için:

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

Aslında .title() tüm kelimeler büyük harfle başlamak yapar. İlk harfi kesinlikle sınırlamak istiyorsanız, bunun yerine capitalize() kullanın.

+0

ve aynı zamanda Frank ve Frank'S arasındaki fark - burada belirtildiği gibi http://op.to/How.To.Capitalize.First.Letter+ –

+0

Ayrıca, 'str.title' lambda x: x.title()' belirtmenin daha kolay bir yoludur. – trss

0

Sen Muhtemelen fark etmez

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

"Temp" e ihtiyacınız yok, hiçbir şey yapmıyor ve bu yüzden "liste [i] = liste [i] .capitalize()" ile aynı - sadece OP'nin listesi 's '' 'list '' yeniden adlandırıldı - ama bu kötü bir uygulama olurdu çünkü bunu yapmak aynı isimde yerleşik işlevi/türü gizlerdi. Baskı ifadesindeki sondaki virgülün neden buraya koyulduğuna emin değilsiniz ... – martineau

+0

oraya virgül koymak yazım hatasıydı. – Kracekumar

5

kullanabilirsiniz (Bu 'bu kelime' örneğin bir fark yaratıyor ya This Word veya This word değiştirilir), ancak bunun yerine bu kullanmak isteyebilirsiniz ,) (

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

+1: güzel yakalama; Ancak, neden "else" ifadesi? Boş dizelerin birleştirilmesinden kaçınmak için? Erken optimizasyon olduğuna inanıyorum. – tzot

+0

@ ΤΖΩΤΖΙΟΥ: Teşekkürler. Bu bölüm esasen cevapımı benzer bir [soruya] getirdim çünkü (http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-character-of-a-string-in- piton/3847369 # 3847369). Ben bir liste elemanını 'Hiçbiri' olarak ele alabildiğinden savunma programlaması olarak düşünmeyi tercih ederim (yani, boş dize davasıyla ilgili endişelerden dolayı optimal değil). – martineau

+1

"Hiçbiri" ile ilgilenmeyi düşünüyorum çünkü bu kötü bir uygulamadır. Bu durumda, (muhtemelen yanlış) boş dizenin sessizce geçmesinden daha fazla bir istisna olmasını tercih ederim. – dbkaplun

45

Hem .capitalize() ve .title: capitalize() veya title() dize yöntemleri nedeniyle, ilk harfi uppercasing ek olarak, aynı zamanda dize geri kalanını küçük harfli (ve bu değil) o değiştirir küçük harf için r harfleri küçük harf.

Yalnızca ilk harfi büyük harfe dönüştüren ve kalanını değiştirmeden bırakan basit bir işlev. OP soran ne yapmaz büyük harfle yazmaz.

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

+1 Dahili fonksiyonları önerdiğiniz için teşekkürler! –

+0

Bu, OP sorusu içinde gösterilen listedeki _each öğesi_'nin 1. harfini değiştirmez. – martineau

+1

LC'ye rağmen, [s [0] .upper() + i [1:] 'i s] ' –

İlgili konular