Thay thế nhiều giá trị trong từ điển python

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

Chúng ta có thể thay thế giá trị trong từ điển bằng Python không?

Phương pháp #1. Sử dụng vòng lặp . Trong trường hợp này, chúng tôi chạy một vòng lặp cho từng khóa trong từ điển đích và cập nhật trong trường hợp giá trị có trong từ điển khác.

Chủ Đề