2008-12-09 40 views
43

Có ai biết cách thực sự đơn giản để tận dụng chữ cái đầu tiên của chuỗi không, bất kể viết hoa của phần còn lại của chuỗi là gì?Viết hoa một chuỗi

Ví dụ:

asimpletest -> Asimpletest 
aSimpleTest -> ASimpleTest 

Tôi muốn để có thể làm tất cả độ dài chuỗi là tốt.

Trả lời

65

@saua là đúng, và

s = s[:1].upper() + s[1:] 

sẽ làm việc cho bất kỳ chuỗi.

+0

Đẹp! Đó là những mẹo nhỏ mà tôi không biết ... Tôi nên sử dụng Python thường xuyên hơn. –

+1

Tại sao không 's = s [0] .upper() + s [1:]'? Tại sao '[: 1]'? – hobs

+7

Khi ghi chú @saua, 's [0]' sẽ thất bại trên một chuỗi rỗng. –

8
s = s[0].upper() + s[1:] 

Điều này sẽ hoạt động với mọi chuỗi, ngoại trừ chuỗi trống (khi s="").

+0

đánh bại tôi với nó, và của bạn là thanh lịch hơn. – UnkwnTech

13

Còn khoảng your_string.title() thì sao?

ví dụ: "banana".title() -> Banana

+3

'str.title' viết hoa mỗi _word_ trong chuỗi –

+0

@John La Rooy ... đó chính xác là những gì tôi muốn làm mà không cần viết một def mới để tách, viết hoa mỗi từ, và đặt nó lại với nhau ... upvote to skyler –

4

này thực sự mang đến cho bạn một từ hoa, thay vì chỉ viết hoa chữ cái đầu tiên

tận -> Tận

def capitalize(str): 
    return str[:1].upper() + str[1:].lower()....... 
112
>>> b = "my name" 
>>> b.capitalize() 
'My name' 
>>> b.title() 
'My Name' 
+5

Sử dụng thư viện chuẩn là loại bỏ đường đi. – Damian

+1

... ngoại trừ viết hoa() loại bỏ bất kỳ mũ hiện có nào khác, mà người hỏi rõ ràng không muốn xảy ra: 'aSimpleTest'.capitalize() =>' Asimpletest ' – pfctdayelise

+1

@pfctdayelise .. bạn có đang bỏ phiếu cho tất cả các câu trả lời không thỏa mãn không yêu cầu này hoặc chỉ của tôi :)? Mặc dù, tôi đồng ý với quan sát của bạn. Câu trả lời của Blair Conrad là chính xác nhất. Tuy nhiên, các câu trả lời khác thêm giá trị trong việc trình bày thông tin hữu ích xung quanh viết hoa chuỗi, bao gồm cả tôi. Ba trong số chúng được thêm vào sau câu trả lời được chấp nhận. – tigeronk2

-4
str = str[:].upper() 

đây là cách dễ nhất để làm điều đó trong ý kiến ​​của tôi

+0

Điều này hoàn toàn sai, vì nó chuyển đổi mọi ký tự của chuỗi thành chữ hoa. Ngoài ra, '[:]' là vô ích. –

2

để viết hoa từ đầu tiên;

a="asimpletest" 
print a.capitalize() 

để làm cho tất cả chữ hoa đều sử dụng đầu sau;

print a.upper() 

đây là cách dễ dàng tôi nghĩ.

1

Bạn có thể sử dụng str.capitalize() chức năng để làm điều đó

In [1]: x = "hello" 

In [2]: x.capitalize() 
Out[2]: 'Hello' 

Hy vọng nó giúp.

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