2016-05-12 12 views
6

Tôi cần viết hoa một chuỗi bằng Python, mà không cần chuyển đổi phần còn lại của chuỗi thành chữ thường. Điều này có vẻ tầm thường nhưng tôi dường như không thể tìm thấy một cách đơn giản để làm điều đó trong Python.Python tương đương với ucfirst của Perl() hoặc s /// e là gì?

Cho một chuỗi như thế này:

"i'm Brian, and so's my wife!" 

Trong Perl tôi có thể làm điều này:

ucfirst($string) 

mà sẽ tạo ra kết quả tôi cần:

I'm Brian, and so's my wife! 

Hoặc với thường xuyên của Perl Tôi cũng có thể làm một cái gì đó như thế này:

$string =~ s/^([a-z])/uc $1/e; 

và đó sẽ làm việc ok quá:

> perl -l 
$s = "i'm Brian, and so's my wife!"; 
$s =~ s/^([a-z])/uc $1/e; 
print $s; 
[EOF] 
I'm Brian, and so's my wife! 
> 

Nhưng trong Python, các str.capitalize() phương pháp thấp hơn trường hợp toàn bộ chuỗi đầu tiên:

>>> s = "i'm Brian, and so's my wife!" 
>>> s.capitalize() 
"I'm brian, and so's my wife!" 
>>> 

Tôi không thấy bất kỳ tương đương nào của công cụ sửa đổi 'e' trong mô-đun tái của Python, nó sẽ cho phép tôi thực hiện nó bằng cách sử dụng regex.

Có cách nào đơn giản/một dòng viết hoa chữ cái đầu tiên của chuỗi trong Python mà không viết hoa chữ cái còn lại của chuỗi không?

Trả lời

11

Làm thế nào về:

s = "i'm Brian, and so's my wife!" 
print s[0].upper() + s[1:] 

Đầu ra là:

I'm Brian, and so's my wife! 
5

Chỉ cần sử dụng chuỗi cắt:

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

Lưu ý rằng chuỗi là không thay đổi; điều này, giống như capitalize(), trả về một chuỗi mới.

10

Đây là sạch hơn nhiều:

string.title() 
+0

tốt như vậy, tốt nhất, đặc biệt là khi có rất nhiều hoa không cần thiết chữ cái trong chuỗi –

+0

Tuyệt vời. thx man. –

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