Hướng dẫn how do you replace a string in an array in python? - làm thế nào để bạn thay thế một chuỗi trong một mảng trong python?

Trong trường hợp bạn đang tự hỏi về hiệu suất của các phương pháp khác nhau, đây là một số thời gian:

Show
In [1]: words = [str(i) for i in range(10000)]

In [2]: %timeit replaced = [w.replace('1', '<1>') for w in words]
100 loops, best of 3: 2.98 ms per loop

In [3]: %timeit replaced = map(lambda x: str.replace(x, '1', '<1>'), words)
100 loops, best of 3: 5.09 ms per loop

In [4]: %timeit replaced = map(lambda x: x.replace('1', '<1>'), words)
100 loops, best of 3: 4.39 ms per loop

In [5]: import re

In [6]: r = re.compile('1')

In [7]: %timeit replaced = [r.sub('<1>', w) for w in words]
100 loops, best of 3: 6.15 ms per loop

Như bạn có thể thấy đối với các mẫu đơn giản như vậy, sự hiểu biết danh sách được chấp nhận là nhanh nhất, nhưng hãy nhìn vào những điều sau đây:

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop

Điều này cho thấy rằng để thay thế phức tạp hơn, một reg-exp được biên dịch sẵn (như trong

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
6) có thể nhanh hơn (nhiều). Nó thực sự phụ thuộc vào vấn đề của bạn và phần ngắn nhất của reg-exp.

Trong Python, bạn có thể tạo một danh sách mới từ danh sách các chuỗi bằng cách trích xuất, thay thế hoặc chuyển đổi các yếu tố đáp ứng các điều kiện nhất định với sự hiểu biết danh sách.

Bài viết này giải thích ngắn gọn về sự hiểu biết danh sách và sau đó mô tả những điều sau đây với mã mẫu.

  • Trích xuất các chuỗi chứa hoặc không chứa một chuỗi cụ thể
  • Thay thế một chuỗi cụ thể trong danh sách
  • Trích xuất các chuỗi bắt đầu hoặc không bắt đầu bằng một chuỗi cụ thể
  • Trích xuất các chuỗi kết thúc hoặc không kết thúc bằng một chuỗi cụ thể
  • Trích xuất chuỗi bằng chữ hoa hoặc chữ thường
  • Chuyển đổi chữ hoa và chữ thường
  • Trích xuất chuỗi bằng chữ cái hoặc số
  • Nhiều điều kiện
  • Biểu thức chính quy (Regex)

Bạn có thể sử dụng các biểu thức thông thường (regex) để xử lý linh hoạt hơn.

  • Re - Hoạt động biểu thức thường xuyên - Tài liệu Python 3.9.7
  • l_replace = [s.replace('XXX', 'ZZZ') for s in l]
    print(l_replace)
    # ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
    
    2 trả về một đối tượng
    l_replace = [s.replace('XXX', 'ZZZ') for s in l]
    print(l_replace)
    # ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
    
    3 nếu nó khớp hoặc
    l_replace = [s.replace('XXX', 'ZZZ') for s in l]
    print(l_replace)
    # ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
    
    4 nếu nó không khớp.

Vì các đối tượng l_replace = [s.replace('XXX', 'ZZZ') for s in l] print(l_replace) # ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222'] 3 được đánh giá là [expression for variable_name in iterable if condition] 5 và l_replace = [s.replace('XXX', 'ZZZ') for s in l] print(l_replace) # ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222'] 4 là l_replace = [s.replace('XXX', 'ZZZ') for s in l] print(l_replace) # ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222'] 8, nếu bạn chỉ muốn trích xuất các phần tử phù hợp với mẫu regex, bạn nên áp dụng l_replace = [s.replace('XXX', 'ZZZ') for s in l] print(l_replace) # ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222'] 2 cho phần In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words] 100 loops, best of 3: 8.25 ms per loop In [9]: r = re.compile('(1|324|567)') In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words] 100 loops, best of 3: 7.87 ms per loop 8 của các hiểu biết như trong các ví dụ trước.

Bạn cũng có thể sử dụng

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print(l_replace_all)
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
1 để thay thế phần phù hợp với mẫu regex. Nếu bạn muốn trích xuất và chỉ thay thế các phần tử phù hợp, hãy thêm
[expression for variable_name in iterable if condition]
1.

  • Làm thế nào để bạn thay thế một phần tử trong một mảng python?

[expression for variable_name in iterable if condition]

Chúng ta có thể thay thế các giá trị bên trong danh sách bằng cách cắt lát. Đầu tiên, chúng tôi tìm thấy chỉ mục của biến mà chúng tôi muốn thay thế và lưu trữ nó trong biến 'I'. Sau đó, chúng tôi thay thế mục đó bằng một giá trị mới bằng cách sử dụng cắt danh sách.

[variable_name for variable_name in iterable if condition]

Làm cách nào để thay thế một chuỗi trong một mảng numpy?

thay thế () hàm, mỗi phần tử trong ARR, trả về một bản sao của chuỗi với tất cả các lần xuất hiện của chuỗi con cũ được thay thế bằng mới ..

  • Cú pháp: numpy.core.defchararray.replace (mảng, cũ, mới, đếm = không).

Thông số :.

  • trong toán tử trong Python (cho danh sách, chuỗi, từ điển, v.v.)

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']

Thay thế một chuỗi cụ thể trong danh sách

Nếu bạn muốn thay thế chuỗi các phần tử của danh sách, hãy sử dụng phương thức chuỗi

[expression for variable_name in iterable if condition]
9 cho mỗi phần tử bằng cách hiểu danh sách.

Nếu không có chuỗi được thay thế, áp dụng

[expression for variable_name in iterable if condition]
9 sẽ không thay đổi, vì vậy bạn không cần phải chọn một phần tử với
[expression for variable_name in iterable if condition]
1.

l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']

Để thay thế toàn bộ phần tử chứa một chuỗi cụ thể, trích xuất nó bằng

[variable_name for variable_name in iterable if condition]
2 và sử dụng các biểu thức có điều kiện (toán tử ternary),
[variable_name for variable_name in iterable if condition]
3.

  • Biểu hiện có điều kiện trong Python

Sử dụng các biểu thức có điều kiện cho phần

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
9 của toàn bộ danh sách.

  • Trích xuất, thay thế, chuyển đổi các yếu tố của một danh sách trong Python

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print(l_replace_all)
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']

Nó có thể dễ hiểu hơn và tránh sai lầm với dấu ngoặc đơn. Về mặt ngữ pháp, không quan trọng nếu có dấu ngoặc đơn hay không.

[('ZZZ' if ('XXX' in s) else s) for s in l]

Phương thức chuỗi

[variable_name for variable_name in iterable if condition]
5 trả về
[expression for variable_name in iterable if condition]
5 nếu chuỗi bắt đầu bằng chuỗi cụ thể.

l_start = [s for s in l if s.startswith('t')]
print(l_start)
# ['twoXXXbbb', 'three999aaa']

l_start_not = [s for s in l if not s.startswith('t')]
print(l_start_not)
# ['oneXXXaaa', '000111222']

Phương thức chuỗi

[variable_name for variable_name in iterable if condition]
7 trả về
[expression for variable_name in iterable if condition]
5 nếu chuỗi kết thúc bằng chuỗi cụ thể.

l_end = [s for s in l if s.endswith('aaa')]
print(l_end)
# ['oneXXXaaa', 'three999aaa']

l_end_not = [s for s in l if not s.endswith('aaa')]
print(l_end_not)
# ['twoXXXbbb', '000111222']

Bạn có thể sử dụng các phương thức chuỗi

[variable_name for variable_name in iterable if condition]
9,
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
0 để xác định xem một chuỗi là tất cả chữ hoa hay tất cả các chữ thường.

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
0

Chuyển đổi chữ hoa và chữ thường

Nếu bạn muốn chuyển đổi tất cả các chữ cái thành chữ hoa hoặc chữ thường, hãy sử dụng các phương thức chuỗi

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
1 hoặc
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
2. Các phương pháp khác cũng được cung cấp, chẳng hạn như
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
3 để viết hoa chữ cái đầu tiên và
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
4 để trao đổi chữ hoa và chữ thường.

Sử dụng các biểu thức có điều kiện để chỉ chuyển đổi những yếu tố thỏa mãn các điều kiện.

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
1

Bạn có thể sử dụng các phương thức chuỗi

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
5 và
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
6 để xác định xem một chuỗi là tất cả bảng chữ cái hay tất cả số.

  • Kiểm tra xem một chuỗi là số, chữ cái, chữ và số hay ASCII

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
2

Nhiều điều kiện

Bạn cũng có thể chỉ định nhiều điều kiện bằng cách sử dụng

l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
7 và
l = ['oneXXXaaa', 'twoXXXbbb', 'three999aaa', '000111222']

l_in = [s for s in l if 'XXX' in s]
print(l_in)
# ['oneXXXaaa', 'twoXXXbbb']

l_in_not = [s for s in l if 'XXX' not in s]
print(l_in_not)
# ['three999aaa', '000111222']
8 trong phần
In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
8 của toàn bộ danh sách. Bạn cũng có thể sử dụng phủ định
l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
0.

Nếu bạn sử dụng nhiều hơn ba điều kiện, việc bao quanh mỗi nhóm với

l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
1 sẽ an toàn hơn vì kết quả sẽ khác nhau tùy thuộc vào thứ tự.

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
3

Biểu thức chính quy (Regex)

Bạn có thể sử dụng các biểu thức thông thường (regex) để xử lý linh hoạt hơn.

  • Re - Hoạt động biểu thức thường xuyên - Tài liệu Python 3.9.7

l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
2 trả về một đối tượng
l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
3 nếu nó khớp hoặc
l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
4 nếu nó không khớp.

Vì các đối tượng

l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
3 được đánh giá là
[expression for variable_name in iterable if condition]
5 và
l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
4 là
l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
8, nếu bạn chỉ muốn trích xuất các phần tử phù hợp với mẫu regex, bạn nên áp dụng
l_replace = [s.replace('XXX', 'ZZZ') for s in l]
print(l_replace)
# ['oneZZZaaa', 'twoZZZbbb', 'three999aaa', '000111222']
2 cho phần
In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
8 của các hiểu biết như trong các ví dụ trước.

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
4

Bạn cũng có thể sử dụng

l_replace_all = ['ZZZ' if 'XXX' in s else s for s in l]
print(l_replace_all)
# ['ZZZ', 'ZZZ', 'three999aaa', '000111222']
1 để thay thế phần phù hợp với mẫu regex. Nếu bạn muốn trích xuất và chỉ thay thế các phần tử phù hợp, hãy thêm
[expression for variable_name in iterable if condition]
1.

In [8]: %timeit replaced = [w.replace('1', '<1>').replace('324', '<324>').replace('567', '<567>') for w in words]
100 loops, best of 3: 8.25 ms per loop

In [9]: r = re.compile('(1|324|567)')

In [10]: %timeit replaced = [r.sub('<\1>', w) for w in words]
100 loops, best of 3: 7.87 ms per loop
5

Làm thế nào để bạn thay thế một phần tử trong một mảng python?

Chúng ta có thể thay thế các giá trị bên trong danh sách bằng cách cắt lát. Đầu tiên, chúng tôi tìm thấy chỉ mục của biến mà chúng tôi muốn thay thế và lưu trữ nó trong biến 'I'. Sau đó, chúng tôi thay thế mục đó bằng một giá trị mới bằng cách sử dụng cắt danh sách.using slicing. First, we find the index of variable that we want to replace and store it in variable 'i'. Then, we replace that item with a new value using list slicing.

Làm cách nào để thay thế một chuỗi trong một mảng numpy?

thay thế () hàm, mỗi phần tử trong ARR, trả về một bản sao của chuỗi với tất cả các lần xuất hiện của chuỗi con cũ được thay thế bằng mới ...
Cú pháp: numpy.core.defchararray.replace (mảng, cũ, mới, đếm = không).
Thông số :.
ARR: [giống như mảng của str] đã cho mảng giống như chuỗi ..
Cũ: [str hoặc unicode] Bộ con cũ mà bạn muốn thay thế ..

Làm thế nào để bạn thay thế một chuỗi cụ thể trong Python?

Cú pháp thay thế ()..
Cú pháp: String.replace (cũ, mới, đếm).
Parameters:.
Giá trị trả về: Nó trả về một bản sao của chuỗi trong đó tất cả các lần xuất hiện của một chuỗi con được thay thế bằng một chuỗi con khác ..

Thay thế () làm gì trong Python?

Phương thức python String thay thế () Phương thức thay thế () thay thế một cụm từ được chỉ định bằng một cụm từ được chỉ định khác.Lưu ý: Tất cả các lần xuất hiện của cụm từ được chỉ định sẽ được thay thế, nếu không có gì khác được chỉ định.replaces a specified phrase with another specified phrase. Note: All occurrences of the specified phrase will be replaced, if nothing else is specified.