2010-11-19 39 views

Trả lời

25

Bạn có thể sử dụng phương pháp capitalize():

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

này sẽ in:

['My', 'Name'] 
+18

viết hoa không làm những gì OP yêu cầu. viết hoa cũng sẽ làm cho các chữ cái không phải là chữ cái đầu tiên thấp hơn – lurscher

+6

vâng, câu trả lời này là gây hiểu lầm: ''naMe'.capitalize() ==' Name'' – Milimetric

12

Bạn có thể sử dụng 'my'.title() đó sẽ trở lại 'My'.

Để vượt qua danh sách đầy đủ, chỉ cần bản đồ qua nó như thế này:

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

Trên thực tế, .title() làm cho tất cả các từ bắt đầu với chữ hoa. Nếu bạn muốn giới hạn nghiêm ngặt chữ cái đầu tiên, hãy sử dụng capitalize() để thay thế. (Điều này làm cho một sự khác biệt ví dụ như trong 'từ này' được thay đổi để một trong hai This Word hoặc This word)

+0

và sự khác biệt giữa Frank và Frank'S - như được lưu ý ở đây http://op.to/How.To.Capitalize.First.Letter+ –

+0

Ngoài ra, 'str.title' là một cách dễ dàng hơn để chỉ rõ' lambda x: x.title() '. – trss

0

Bạn có thể sử dụng

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

Bạn không cần 'temp', nó không làm gì cả và cũng giống như' list [i] = list [i] .capitalize() '- nó chỉ hoạt động nếu danh sách của OP có tên' s 'đã được đổi tên thành' danh sách' - nhưng đó sẽ là một thực hành không tốt vì làm như vậy sẽ ẩn chức năng/kiểu được xây dựng sẵn có cùng tên. Không chắc chắn tại sao dấu phẩy sau trên báo cáo in được đặt ở đó ... – martineau

+0

đó là lỗi chính tả để đặt dấu phẩy ở đó. – Kracekumar

5

Nó có lẽ không quan trọng, nhưng bạn có thể muốn sử dụng này thay vì các capitalize() hoặc title() phương pháp chuỗi bởi vì, ngoài việc uppercasing chữ cái đầu tiên, họ cũng thành chữ thường phần còn lại của chuỗi (và điều này không):

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

+1: bắt thú vị; tuy nhiên, tại sao biểu thức 'if s else '''? Để tránh ghép nối các chuỗi rỗng? Tôi tin rằng đó là tối ưu hóa sớm. – tzot

+0

@ ΤΖΩΤΖΙΟΥ: Cảm ơn. Phần đó là chủ yếu bởi vì tôi chỉ tinh chỉnh câu trả lời của tôi cho một [câu hỏi] tương tự (http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-character-of-a-string-in- python/3847369 # 3847369). Tôi thích nghĩ về nó như là lập trình phòng thủ vì nó có thể xử lý một phần tử danh sách là 'None' (vì vậy, không, nó không có ở đó vì lo ngại về trường hợp chuỗi rỗng nhỏ hơn tối ưu). – martineau

+1

Tôi nghĩ rằng xử lý 'Không có' như thế này là thực hành xấu. Tôi thà có một ngoại lệ được nêu ra trong trường hợp này hơn là có chuỗi trống (có thể sai) âm thầm trôi qua. – dbkaplun

45

Cả .capitalize() và .title(), thay đổi othe chữ r trong chuỗi thành chữ thường.

Đây là một hàm đơn giản chỉ thay đổi chữ cái đầu tiên thành chữ hoa và để phần còn lại không đổi.

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

+1 cảm ơn vì đã đề xuất các chức năng sẵn có! –

+0

Điều này không thay đổi chữ cái đầu tiên của _each element_ trong danh sách được hiển thị trong câu hỏi của OP. – martineau

+1

Mặc dù LC, '[i [0] .upper() + i [1:] cho i in s]' –

Các vấn đề liên quan