Hướng dẫn how do you capitalize every first word in python? - làm cách nào để bạn viết hoa từng từ đầu tiên trong python?

Chỉ vì loại điều này là thú vị đối với tôi, đây là hai giải pháp nữa.

Chia thành từ, giới thiệu ban đầu từng từ từ các nhóm chia và tham gia lại. Điều này sẽ thay đổi không gian trắng ngăn cách các từ thành một không gian trắng duy nhất, bất kể nó là gì.

s = 'the brown fox'
lst = [word[0].upper() + word[1:] for word in s.split()]
s = " ".join(lst)

EDIT: Tôi không nhớ những gì tôi đã nghĩ lại khi tôi viết mã trên, nhưng không cần phải xây dựng một danh sách rõ ràng; Chúng ta có thể sử dụng một biểu thức máy phát để làm điều đó theo kiểu lười biếng. Vì vậy, đây là một giải pháp tốt hơn:

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())

Sử dụng một biểu thức chính quy để khớp với phần đầu của chuỗi, hoặc không gian trắng phân tách các từ, cộng với một ký tự không phải là một không gian trắng; Sử dụng dấu ngoặc đơn để đánh dấu "các nhóm đối sánh". Viết một chức năng lấy một đối tượng khớp và trả về nhóm khớp không gian trắng không thay đổi và nhóm đối sánh ký tự không gian màu trong trường hợp trên. Sau đó sử dụng

import re
s = 'the brown fox'

def repl_func(m):
    """process regular expression match groups for word upper-casing problem"""
    return m.group(1) + m.group(2).upper()

s = re.sub("(^|\s)(\S)", repl_func, s)


>>> re.sub("(^|\s)(\S)", repl_func, s)
"They're Bill's Friends From The UK"
1 để thay thế các mẫu. Cái này không có vấn đề dấu câu của giải pháp đầu tiên, cũng không làm lại không gian trắng như giải pháp đầu tiên của tôi. Điều này tạo ra kết quả tốt nhất.

import re
s = 'the brown fox'

def repl_func(m):
    """process regular expression match groups for word upper-casing problem"""
    return m.group(1) + m.group(2).upper()

s = re.sub("(^|\s)(\S)", repl_func, s)


>>> re.sub("(^|\s)(\S)", repl_func, s)
"They're Bill's Friends From The UK"

Tôi rất vui vì tôi đã nghiên cứu câu trả lời này. Tôi không biết rằng

import re
s = 'the brown fox'

def repl_func(m):
    """process regular expression match groups for word upper-casing problem"""
    return m.group(1) + m.group(2).upper()

s = re.sub("(^|\s)(\S)", repl_func, s)


>>> re.sub("(^|\s)(\S)", repl_func, s)
"They're Bill's Friends From The UK"
1 có thể có một chức năng! Bạn có thể thực hiện xử lý không cần thiết bên trong
import re
s = 'the brown fox'

def repl_func(m):
    """process regular expression match groups for word upper-casing problem"""
    return m.group(1) + m.group(2).upper()

s = re.sub("(^|\s)(\S)", repl_func, s)


>>> re.sub("(^|\s)(\S)", repl_func, s)
"They're Bill's Friends From The UK"
1 để tạo ra kết quả cuối cùng!

Hướng dẫn how do you capitalize every first word in python? - làm cách nào để bạn viết hoa từng từ đầu tiên trong python?

Trong bài viết này, chúng tôi sẽ thảo luận về 5 cách khác nhau để chuyển đổi chữ cái đầu tiên của mỗi từ trong một chuỗi thành chữ hoa. Chúng tôi cũng sẽ thảo luận về những hạn chế của mỗi phương pháp và cách nào là tốt nhất cho chúng tôi.

Sử dụng Tiêu đề () để viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi trong Python

Lớp Python Str cung cấp một tiêu đề chức năng thành viên () tạo ra mỗi từ tiêu đề từ trong chuỗi. Nó có nghĩa là, nó chuyển đổi ký tự đầu tiên của từng từ thành trường hợp trên và tất cả các ký tự còn lại của từ thành chữ thường.

Hãy để sử dụng điều này để viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi,

sample_text = "this is a sample string"

# Capitalize the first letter of each word i.e.
# Convert the first letter of each word to Upper case and all other to lower case
result = sample_text.title()

print(result)

Output:

Quảng cáo

This Is A Sample String

Nó hoạt động tốt với giải pháp này, nhưng có một cảnh báo. Hàm Tiêu đề () không chỉ viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi mà còn làm cho tất cả các ký tự còn lại của mỗi từ sang trường hợp trên. Ví dụ,

sample_text = "33a. it's GONE too far"

# Capitalize the first letter of each word
result = sample_text.title()

print(result)

Output:

33A. It'S Gone Too Far

Có 3 hành vi bất ngờ trong ví dụ trên,

  • Trong ví dụ này, nó đã chuyển đổi trên đường đi thành một cách khác, bởi vì đối với mỗi từ trong chuỗi, nó chỉ tạo ra ký tự đầu tiên là trường hợp trên và tất cả các ký tự còn lại là chữ thường.
  • Nó đã chuyển đổi thành công của nó thành một cách khác, vì nó đã coi đó là một từ khác.
  • Nó đã chuyển đổi từ 33a, thành 33a, bởi vì nó đã coi đó là một chữ cái đầu tiên của Word Word 33a.

Vì vậy, hàm Title () không phải là giải pháp tốt nhất để viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi. & Nbsp; hãy để thảo luận về một giải pháp khác,

Lớp Python sườn Str cung cấp một hàm viết hoa (), nó chuyển đổi ký tự đầu tiên của chuỗi thành vỏ trên. Trường hợp nó đã ở trong trường hợp trên thì nó không làm gì cả.

Chúng ta có thể sử dụng vốn hóa này () để viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi. Đối với điều đó, chúng ta cần chia chuỗi của mình thành một danh sách các từ và sau đó trên mỗi từ trong danh sách chúng ta cần gọi hàm viết hoa (). Sau đó, chúng ta cần tham gia tất cả các từ được viết hoa để tạo thành một chuỗi lớn.

Hãy để hiểu điều này với một ví dụ,

def capitalize_each_word(original_str):
    result = ""
    # Split the string and get all words in a list
    list_of_words = original_str.split()
    # Iterate over all elements in list
    for elem in list_of_words:
        # capitalize first letter of each word and add to a string
        if len(result) > 0:
            result = result + " " + elem.strip().capitalize()
        else:
            result = elem.capitalize()
    # If result is still empty then return original string else returned capitalized.
    if not result:
        return original_str
    else:
        return result

sample_text = "33a. it's GONE too far"

result = capitalize_each_word(sample_text)

print(result)

Output:

33a. It's Gone Too Far

Nó đã chuyển đổi chữ cái đầu tiên của mỗi từ trong chuỗi thành trường hợp trên.

Thay vì viết chức năng lớn, chúng ta có thể đạt được giống nhau bằng cách sử dụng các biểu thức máy phát, tức là.

sample_text = "33a. it's GONE too far"

result = ' '.join(elem.capitalize() for elem in sample_text.split())

print(result)

Output:

33a. It's Gone Too Far

Ở đây chúng tôi chia chuỗi thành các từ và lặp lại từng từ của chúng tôi trong chuỗi bằng cách sử dụng biểu thức tạo. Trong khi lặp lại, chúng tôi đã gọi hàm viết hoa () trên mỗi từ, để chuyển đổi chữ cái đầu tiên thành chữ hoa và từ đó đã nối thành một chuỗi bằng cách sử dụng ‘làm dấu hiệu.

Nó phục vụ mục đích, nhưng có thể có một vấn đề trong cách tiếp cận này, tức là nếu các từ trong chuỗi gốc được phân tách bằng nhiều không gian trắng hoặc tab, v.v. thì cách tiếp cận này có thể gây ra lỗi, bởi vì chúng ta đang tham gia tất cả các từ được viết hoa bằng cách sử dụng cùng một dấu phân cách, tức là. một không gian trắng duy nhất. Kiểm tra ví dụ này,

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
1

Output:

This Is A Sample String

Ở đây chuỗi ban đầu có nhiều khoảng trống giữa các từ, nhưng trong chuỗi cuối cùng của chúng tôi, tất cả các từ được viết hoa được phân tách bằng một không gian trắng. Đối với một số điều này có thể không phải là hành vi chính xác. Vì vậy, để khắc phục vấn đề này, hãy kiểm tra phương pháp tiếp theo của chúng tôi.

Sử dụng String.capwords () để viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi

Mô -đun chuỗi Python sườn cung cấp một hàm capwords () để chuyển đổi chữ cái đầu tiên thành chữ hoa và tất cả các chữ cái còn lại khác thành chữ thường. Về cơ bản, nó phân tách chuỗi thành các từ và sau khi viết hoa mỗi từ, tham gia cùng chúng bằng cách sử dụng một trình phân tách nhất định. Kiểm tra ví dụ này,
It basically splits the string to words and after capitalizing each word, joins them back using a given seperator. Checkout this example,

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
3

Output:

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
4

Vấn đề với giải pháp IS là nó không chỉ chuyển đổi chữ cái đầu tiên thành chữ hoa mà còn làm cho các chữ cái còn lại của từ thành chữ thường. Đối với một số người, đây có thể không phải là giải pháp chính xác.

Vì vậy, hãy để thảo luận về giải pháp cuối cùng và tốt nhất của chúng tôi, những gì chỉ mong đợi từ nó.

Sử dụng regex để viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi

Sử dụng regex, chúng tôi sẽ tìm kiếm ký tự bắt đầu của từng từ và chuyển đổi thành chữ hoa. Ví dụ,

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
5

Output:

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
6

Nó chỉ viết hoa ký tự đầu tiên của mỗi từ trong chuỗi và không sửa đổi khoảng trắng giữa các từ.

Nó đã hoạt động như thế nào?

Chúng tôi đã tạo sử dụng một mẫu (^| \ s) (\ s). Nó tìm kiếm các mẫu chuỗi bắt đầu bằng không gian trắng hoặc nhiều hơn và sau đó có một ký tự không có khoảng trắng sau đó. Sau đó, với mỗi trường hợp phù hợp, nó nhóm cả khoảng trắng ban đầu và ký tự đầu tiên là các nhóm riêng biệt. Sử dụng hàm regex.sub (), chúng tôi đã chuyển từng phiên bản phù hợp của mẫu thành hàm convert_to_uppercase (), chuyển đổi nhóm thứ hai, tức là chữ cái đầu tiên của từ thành trên và sau đó tham gia với nhóm đầu tiên (không hoặc nhiều khoảng trắng hơn ).

Cho chuỗi,

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
7

Hàm convert_to_uupercase () được gọi là 4 lần bởi regex.sub () và trong mỗi nhóm cuộc gọi 1 & 2 của đối tượng khớp là,

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
8

Bên trong Convert_to_uupercase (), nó đã chuyển đổi nhóm thứ hai, tức là ký tự đầu tiên của mỗi từ thành chữ hoa.

Vì vậy, đây là cách chúng ta có thể tận dụng chữ cái đầu tiên của mỗi từ trong một chuỗi bằng cách sử dụng regex và không ảnh hưởng đến bất kỳ ký tự nào khác của chuỗi.

Ví dụ hoàn chỉnh như sau,

s = 'the brown fox'
s = ' '.join(word[0].upper() + word[1:] for word in s.split())
9

Output:

import re
s = 'the brown fox'

def repl_func(m):
    """process regular expression match groups for word upper-casing problem"""
    return m.group(1) + m.group(2).upper()

s = re.sub("(^|\s)(\S)", repl_func, s)


>>> re.sub("(^|\s)(\S)", repl_func, s)
"They're Bill's Friends From The UK"
0

Làm thế nào để bạn tận dụng sự khởi đầu của mỗi từ trong Python?

Viết hoa () nó được sử dụng giống như phương thức Tiêu đề (). Chúng tôi biết phương thức viết hoa () chỉ chuyển đổi chữ cái đầu tiên của một chuỗi thành chữ hoa trong python. Tuy nhiên, chúng ta có thể kết hợp nó với phương thức chia () để tận dụng từng từ. It is used just like the title() method. We know the capitalize() method converts only the first letter of a string to uppercase in Python. However, we can combine it with the split() method to capitalize each word.

Làm thế nào để bạn tận dụng các từ trong Python?

Để viết hoa chữ cái đầu tiên, hãy sử dụng hàm viết hoa ().Các hàm này chuyển đổi ký tự đầu tiên thành chữ hoa và chuyển đổi các ký tự còn lại thành chữ thường.Nó không lấy bất kỳ tham số nào và trả về bản sao của chuỗi được sửa đổi.use the capitalize() function. This functions converts the first character to uppercase and converts the remaining characters to lowercase. It doesn't take any parameters and returns the copy of the modified string.

Làm cách nào để tự động viết hoa từ đầu tiên?

Để sử dụng phím tắt để thay đổi giữa chữ thường, chữ hoa và viết hoa từng từ, chọn văn bản và nhấn Shift + F3 cho đến khi trường hợp bạn muốn được áp dụng.select the text and press SHIFT + F3 until the case you want is applied.

Làm thế nào để bạn tận dụng từng từ trong gấu trúc?

Pandas - Chuyển đổi ký tự đầu tiên và cuối cùng của mỗi từ thành trường hợp trên trong một loạt.Trong Python, nếu chúng ta chỉ muốn chuyển đổi ký tự đầu tiên của mỗi từ thành chữ hoa, chúng ta có thể sử dụng phương thức viết hoa ().Hoặc chúng ta có thể lấy ký tự đầu tiên của chuỗi và thay đổi nó thành chữ hoa bằng phương thức trên ().use the capitalize() method. Or we can take just the first character of the string and change it to uppercase using the upper() method.