Chúng ta có thể thay đổi ký tự chuỗi trong Python không?

Trong python, lớp String (Str) cung cấp một phương thức replace() để thay thế các chuỗi con trong một chuỗi. Chúng ta có thể sử dụng nó để thay thế tất cả các lần xuất hiện của một ký tự trong chuỗi bằng một ký tự khác. Ví dụ,

org_string = "This is a sample string"

# Replace all occurrences of a character in string in python
new_string = org_string.replace('s', 'X')

print(new_string)

đầu ra

ThiX iX a Xample Xtring

Ở đây chúng tôi đã chuyển ký tự được thay thế 's' làm đối số đầu tiên và ký tự 'X' làm đối số thứ hai. Sau đó, phương thức replace() trả về một bản sao của chuỗi gốc bằng cách thay thế tất cả các lần xuất hiện của ký tự ‘s’ bằng ký tự ‘X’

quảng cáo

Vì các chuỗi là bất biến trong Python, tôi. e. , chúng tôi không thể thay đổi nội dung của nó. Do đó, hàm replace() trả về một bản sao của chuỗi có nội dung được thay thế

Biết thêm về Str. replace() và xem thêm ví dụ

Thay thế hai lần xuất hiện đầu tiên của một ký tự trong chuỗi trong python

Thay vì thay thế tất cả các lần xuất hiện của một ký tự trong một chuỗi, chúng ta chỉ có thể thay thế một vài lần xuất hiện đầu tiên của một ký tự trong chuỗi bằng cách chuyển đối số đếm trong hàm replace() i. e

org_string = "This is a sample string"

# Replace first two occurrences of a character in string
new_string = org_string.replace('s', 'X', 2)

print(new_string)

đầu ra

ThiX iX a sample string

Ở đây chúng tôi đã chuyển ký tự được thay thế 's' làm đối số đầu tiên và ký tự 'X' làm đối số thứ hai. Sau đó, chúng tôi chuyển đối số thứ ba là 2. Đối số thứ ba là tùy chọn và nó báo cho hàm replace() biết cần phải thay thế bao nhiêu lần xuất hiện của chuỗi con đã cho

Sau đó, phương thức replace() trả về một bản sao của chuỗi gốc bằng cách chỉ thay thế hai lần xuất hiện đầu tiên của 's' bằng 'X'
Vì các chuỗi là bất biến trong Python, tôi. e. , chúng tôi không thể thay đổi nội dung của nó. Do đó, hàm replace() trả về một bản sao của chuỗi có nội dung được thay thế

Thay thế một ký tự trong chuỗi bằng regex trong python

Python cung cấp một mô-đun regex (re) và trong mô-đun này, nó cung cấp một hàm sub() để thay thế nội dung của một chuỗi dựa trên các mẫu. Chúng ta có thể sử dụng lại. sub() để thay thế/thay thế tất cả các lần xuất hiện của một ký tự trong chuỗi,

import re

# Replace a character in string using regex in python
new_string = re.sub('s', 'X', org_string)

print(new_string)

đầu ra

ThiX iX a Xample Xtring

Ở đây, chúng tôi đã chuyển ký tự được thay thế 's' làm đối số đầu tiên và ký tự 'X' làm đối số thứ hai trong hàm sub(). Sau đó, chúng tôi đã chuyển đối số thứ ba dưới dạng chuỗi gốc

Hàm Sub() đã sử dụng đối số đầu tiên làm mẫu và thay thế tất cả các kết quả khớp của mẫu đó bằng chuỗi thay thế đã cho, i. e. , 'X'. Vì vậy, nó đã thay thế tất cả các lần xuất hiện của ký tự 's' bằng ký tự 'X'. Vì các chuỗi là bất biến trong python tôi. e. , chúng tôi không thể thay đổi nội dung của nó. Do đó, hàm sub() của mô-đun regex trả về một bản sao của chuỗi có nội dung được thay thế

Thay thế ký tự trong chuỗi bằng vòng lặp for trong python

Khởi tạo một chuỗi rỗng và sau đó lặp lại tất cả các ký tự của chuỗi gốc. Trong quá trình lặp lại, hãy thêm từng ký tự vào chuỗi mới. Nhưng đối với các ký tự cần thay thế, hãy sử dụng ký tự thay thế để thay thế. Ví dụ,

to_replace = 's'
replaced = 'X'

# Replace a character in string using for loop
new_string = ''
for elem in org_string:
    if elem == to_replace:
        new_string += replaced
    else:
        new_string += elem

print(new_string)

đầu ra

ThiX iX a Xample Xtring

Nó đã thay thế tất cả các lần xuất hiện của ký tự 's' bằng 'X'

Vì các chuỗi là bất biến trong Python, tôi. e. , chúng tôi không thể thay đổi nội dung của nó. Do đó, chúng tôi đã tạo một bản sao mới của chuỗi với nội dung được thay thế

Tóm lược

Chúng ta có thể thay thế một ký tự trong chuỗi bằng một ký tự khác trong python bằng cách sử dụng hàm replace() hoặc hàm sub() hoặc vòng lặp for

Chuỗi là một trong những loại dữ liệu cần thiết nhất trong Lập trình và là loại mà mọi nhà phát triển nên biết. Có nhiều cách khác nhau để thao tác với chuỗi python và có nhiều hàm và phương thức cho phép bạn thực hiện điều đó một cách dễ dàng

Trong bài viết này, bạn sẽ tìm hiểu cách thay thế chuỗi trong chuỗi python bằng phương thức replace() và xây dựng hàm thay thế của riêng bạn

Chuỗi là gì?

Chuỗi python là một tập hợp các ký tự và một ký tự là một chữ cái hoặc ký hiệu. Ví dụ. 'a' hoặc

string.replace(old, new, count)
0. Trong Python, ký tự cũng là chuỗi

Chuỗi giống như mảng/danh sách trong Python, nhưng chúng không thay đổi. Vì vậy, thao tác với chuỗi luôn tốn thêm dung lượng

Chuỗi cũng tuân theo lập chỉ mục dựa trên số 0 giống như mảng, cho phép chúng tôi lấy các ký tự cụ thể từ chuỗi. Ví dụ

>>> s = "apple"
>>> s[0]
'a'
>>> s[2]
'p'
>>> 

Làm cách nào để thay thế một ký tự trong một chuỗi trong Python?

Phương thức chuỗi

string.replace(old, new, count)
1 cho phép chúng ta thay thế tất cả các lần xuất hiện của một ký tự cụ thể old trong chuỗi python bằng một ký tự mới khác. Cú pháp thay thế() là

________số 8_______

Bây giờ hãy xem một ví dụ sử dụng phương thức replace()

>>> s = "apple"
>>> s.replace('a', 'Z')
'Zpple'
>>> s.replace('p', 'W')
'aWWle'
>>> s
'apple'
>>> 

Ở đây, chúng ta có một chuỗi python s. Đầu tiên, chúng tôi thay thế ký tự 'a' bằng 'Z' và tiếp theo, chúng tôi thay thế 'p' bằng 'W', thay đổi tất cả các lần xuất hiện của 'p' bằng 'W'. Lưu ý, không thao tác nào thay đổi chuỗi ban đầu nhưng tạo ra một chuỗi mới với các thay đổi

Theo mặc định, phương thức replace() thay thế tất cả các lần xuất hiện của một ký tự, nhưng bằng cách sử dụng tham số đếm tùy chọn, chúng ta có thể chọn số lần xuất hiện của ký tự mà chúng ta muốn thay thế. Tham số đếm sẽ thay thế một số ký tự nhất định bắt đầu từ đầu chuỗi thay thế

>>> s.replace('p', 'W', 1)
'aWple'
>>> s1 = "appppple"
>>> s2 = "appapple"
>>> 
>>> s1.replace('p', 'W',  3)
'aWWWpple'
>>> s2.replace('p', 'W',  3)
'aWWaWple'

Tại đây, bạn có thể thấy đầu ra của tham số đếm cho các loại chuỗi khác nhau

Làm cách nào để thay thế một ký tự trong chuỗi trong Python mà không sử dụng phương thức thay thế?

Nếu không muốn sử dụng phương thức thay thế, chúng ta có thể dễ dàng xây dựng hàm Python của riêng mình để thay thế một ký tự trong chuỗi

Một cách tiếp cận hiệu quả là duyệt qua mọi ký tự trong chuỗi python và thay thế nó bằng ký tự mới

Chức năng sẽ trông như thế này

def myReplace(string, old, new):
    newStr = list(string)
    for i in range(len(newStr)):
        if newStr[i] == old:
            newStr[i] = new
    return "".join(newStr)
>>> myReplace('apple', 'p', 'W')
'aWWle'

Ở đây, trước tiên chúng tôi chuyển đổi chuỗi thành một mảng, vì một chuỗi là bất biến và chúng tôi muốn có thể thay đổi các ký tự một cách dễ dàng. Tiếp theo, chúng tôi lặp qua mọi chỉ mục trong chuỗi và nếu ký tự tại chỉ mục đó bằng ký tự cũ, chúng tôi sẽ thay thế nó bằng ký tự mới. Cuối cùng, chúng tôi chuyển đổi mảng của mình trở lại thành một chuỗi bằng phương thức nối. Đây là một cách tiếp cận rất hiệu quả với độ phức tạp thời gian O(n) và độ phức tạp không gian O(n)

Tuy nhiên, chúng ta có thể thêm tham số đếm vào hàm này, giống như trong phương thức thay thế() ban đầu. Chúng tôi có thể chỉ cần đếm xem chúng tôi đã thay thế bao nhiêu ký tự và dừng lại khi chúng tôi thay thế các ký tự đếm

def myReplace(string, old, new, count=float('inf')):
    newStr = list(string)
    for i in range(len(newStr)):
        if newStr[i] == old:
            newStr[i] = new
            count -= 1
        if count == 0:
            break
    return "".join(newStr)
>>> myReplace('apple', 'p', 'W')
'aWWle'
>>> myReplace('apple', 'p', 'W', 1)
'aWple'
>>> myReplace('apple', 'p', 'W', 2)
'aWWle'
>>> myReplace('apple', 'p', 'W', 5)
'aWWle'
>>> 

Theo mặc định, chúng tôi giữ số lượng là vô cùng, vì vậy tất cả các ký tự sẽ được thay thế nếu không có số lượng nào được đưa ra. Mỗi lần, ký tự cũ được tìm thấy, số lượng giảm đi 1. Khi đếm về 0, vòng lặp sẽ ngắt, đảm bảo không có ký tự nào khác bị thay đổi. Hiệu quả của phương pháp này cũng giống như các phương pháp khác

Làm cách nào để bạn thay thế nhiều ký tự trong một chuỗi bằng Python?

Phương thức replace() thậm chí còn cho phép chúng ta thay thế toàn bộ chuỗi con bằng một chuỗi con khác trong một chuỗi. Chúng ta hãy xem xét một số ví dụ

>>> s = 'abcdef'
>>> s.replace('bcd', 'ghik')
'aghikef'
>>>
>>> s = 'abcdefgbcd'
>>> s.replace('bcd', 'ghik')
'aghikefgghik'
>>> s.replace('bcd', 'ghik', 1)
'aghikefgbcd'
>>> 

Ở đây, chúng ta có một chuỗi s và phương thức thay thế có thể thay thế chuỗi con 'bcd' bằng 'ghik', trả về một chuỗi mới. Sau đó, chúng tôi làm tương tự với một chuỗi khác, nhưng 'bcd' xuất hiện hai lần trong chuỗi, vì vậy cả hai lần xuất hiện đều được thay thế. Cuối cùng, sử dụng tham số đếm, chúng ta chỉ có thể thay thế lần xuất hiện đầu tiên của 'bcd'

Thay thế các chuỗi con theo cùng một khái niệm như thay thế các ký tự đơn

Tóm lược

Trong bài viết này, bạn đã học cách thay thế các ký tự trong một chuỗi bằng Python bằng cách sử dụng phương thức replace() và bằng cách xây dựng hàm thay thế hiệu quả của riêng bạn

Đầu tiên, bạn đã biết chuỗi là gì, các ký tự trong Python là gì và chuỗi rất giống với mảng như thế nào. Tiếp theo, bạn đã biết chức năng của phương thức replace(), cú pháp, tham số và hành vi mặc định của nó mà bạn có thể thay đổi bằng cách sử dụng tham số đếm. Sau đó, bạn đã hiểu cách bạn có thể triển khai hàm thay thế của riêng mình, sử dụng vòng lặp for đơn giản, và sau đó bạn đã biết cách chúng ta thậm chí có thể thêm tính năng đếm vào hàm của mình để làm cho nó giống với hàm replace() ban đầu. Cuối cùng, bạn đã học được rằng phương thức replace() không chỉ có thể thay thế các ký tự trong một chuỗi mà còn có thể thay thế toàn bộ chuỗi con bằng một chuỗi con khác một cách dễ dàng

Bước tiếp theo

Để tìm hiểu thêm về những kiến ​​thức cơ bản về Python, mã hóa và phát triển phần mềm, hãy xem Sách hướng dẫn cơ bản về mã hóa dành cho nhà phát triển của chúng tôi, nơi chúng tôi đề cập đến các ngôn ngữ, khái niệm và công cụ thiết yếu mà bạn sẽ cần để trở thành một nhà phát triển chuyên nghiệp

Cảm ơn và mã hóa hạnh phúc. Chúng tôi hy vọng bạn thích bài viết này. Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, vui lòng liên hệ với jacob@initialcommit. io

Bạn có thể thay đổi các ký tự trong một chuỗi không?

Chuỗi là bất biến trong Java. Bạn không thể thay đổi chúng . Bạn cần tạo một chuỗi mới với ký tự được thay thế.

Bạn có thể sửa đổi một chuỗi trong Python không?

Chuỗi trong Python là bất biến. Do đó, chúng tôi không thể sửa đổi chuỗi tại chỗ .