Trong bài viết này, chúng ta sẽ thảo luận về các cách khác nhau để thay thế nhiều ký tự trong một chuỗi bằng Python
Mục lục
Giả sử chúng ta có một chuỗi,
sample_string = "This is a sample string"
Bây giờ chúng tôi muốn các ký tự sau được thay thế trong chuỗi đó,
- Thay thế tất cả các lần xuất hiện của 's' bằng 'X'
- Thay thế tất cả các lần xuất hiện của 'a' bằng 'Y'
- Thay thế tất cả các lần xuất hiện của 'i' bằng 'Z'
- con trăn. Thay thế nhiều ký tự trong một chuỗi bằng vòng lặp for
Có nhiều cách khác nhau để làm điều này. Hãy thảo luận từng cái một,
quảng cáo
con trăn. Thay thế nhiều ký tự trong một chuỗi bằng phương thức thay thế[]
Trong Python, lớp String [Str] cung cấp một phương thức replace[old, new] để thay thế các chuỗi con trong một chuỗi. Nó thay thế tất cả các lần xuất hiện của chuỗi con cũ bằng chuỗi con mới
Trong Python không có khái niệm về kiểu dữ liệu ký tự. Một ký tự trong Python cũng là một chuỗi. Vì vậy, chúng ta có thể sử dụng phương thức replace[] để thay thế nhiều ký tự trong một chuỗi
sample_string = "This is a sample string" char_to_replace = {'s': 'X', 'a': 'Y', 'i': 'Z'} # Iterate over all key-value pairs in dictionary for key, value in char_to_replace.items[]: # Replace key character with value character in string sample_string = sample_string.replace[key, value] print[sample_string]
đầu ra
ThZX ZX Y XYmple XtrZng
Nó thay thế tất cả các lần xuất hiện của,
- Ký tự 's' với 'X'
- Ký tự 'a' với 'Y'
- Ký tự 'i' với 'Z'
Vì các chuỗi là bất biến trong Python và 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ế
con trăn. Thay thế nhiều ký tự trong một chuỗi bằng cách sử dụng translate[]
Chúng ta cũng có thể thay thế nhiều ký tự trong chuỗi bằng các ký tự khác bằng hàm translate[],
sample_string = "This is a sample string" char_to_replace = {'s': 'X', 'a': 'Y', 'i': 'Z'} # Replace all multiple characters in a string # based on translation table created by dictionary sample_string = sample_string.translate[str.maketrans[char_to_replace]] print[sample_string]
đầu ra
ThZX ZX Y XYmple XtrZng
Chúng tôi đã tạo bảng dịch đó từ một từ điển bằng Str. hàm maketrans[]. Sau đó, chúng tôi đã chuyển bảng dịch đó làm đối số cho phương thức translate[] của Str, phương thức này thay thế các ký tự sau trong chuỗi dựa trên bảng dịch đó,
- Ký tự 's' được thay thế bằng 'X'
- Ký tự 'a' được thay thế bằng 'Y'
- Ký tự 'i' được thay thế bằng 'Z'
Vì các chuỗi là bất biến trong Python và chúng tôi không thể thay đổi nội dung của nó. Do đó, hàm translate[] trả về một bản sao của chuỗi có nội dung được thay thế
con trăn. Thay thế nhiều ký tự trong một chuỗi bằng regex
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. hàm sub[] để thay thế/thay thế nhiều ký tự trong một chuỗi,
import re sample_string = "This is a sample string" char_to_replace = {'s': 'X', 'a': 'Y', 'i': 'Z'} # Replace multiple characters [s, a and i] in string with values in # dictionary using regex sample_string = re.sub[r"[sai]", lambda x: char_to_replace[x.group[0]], sample_string] print[sample_string]
đầu ra
ThZX ZX Y XYmple XtrZng
Ở đây, chúng tôi đã chuyển một mẫu r'[sai]' làm đối số đầu tiên, khớp với tất cả các lần xuất hiện của ký tự 's', 'a' và 'i'. Là đối số thứ hai trong hàm sub[], chúng ta đã chuyển một hàm lambda, hàm này tìm nạp ký tự khớp từ đối tượng khớp và sau đó trả về giá trị được liên kết với ký tự đó từ từ điển. Sau đó, với tư cách là đối số thứ ba, chúng tôi đã chuyển chuỗi gốc
Bây giờ, đối với mỗi ký tự trong chuỗi khớp với mẫu, nó gọi hàm lambda, hàm này cung cấp ký tự thay thế. Sau đó, hàm sub[] sẽ thay thế ký tự đó trong chuỗi
Nó thay thế tất cả các lần xuất hiện của,
- Ký tự 's' với 'X'
- Ký tự 'a' với 'Y'
- Ký tự 'i' với 'Z'
Vì các chuỗi là bất biến trong Python và 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ế
con trăn. Thay thế nhiều ký tự trong một chuỗi bằng vòng lặp for
Khởi tạo một chuỗi trống mới 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, đối với mỗi lần kiểm tra, nếu ký tự tồn tại trong từ điển char_to_replaced hay không,
- Nếu có, tìm nạp thay thế ký tự đó và thêm vào chuỗi mới
- Nếu không, sau đó thêm ký tự vào chuỗi mới
Ví dụ,
sample_string = "This is a sample string" char_to_replace = {'s': 'X', 'a': 'Y', 'i': 'Z'} result = '' # Iterate over all characters in string for elem in sample_string: # Check if character is in dict as key if elem in char_to_replace: # If yes then add the value of that char # from dict to the new string result += char_to_replace[elem] else: # If not then add the character in new string result += elem print[result]
đầu ra
ThZX ZX Y XYmple XtrZng
Nó thay thế tất cả các lần xuất hiện của,
- Ký tự 's' với 'X'
- Ký tự 'a' với 'Y'
- Ký tự 'i' với 'Z'
Vì các chuỗi là bất biến trong Python và 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ế nhiều ký tự trong một chuỗi bằng cách sử dụng replace[] , regex. vòng lặp sub[], translate[] hoặc for trong python