Hướng dẫn how do you replace a specific character in a list python? - làm thế nào để bạn thay thế một ký tự cụ thể trong một danh sách 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:

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

In [2]: %timeit replaced = [w.replace['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', ''], words]
100 loops, best of 3: 5.09 ms per loop

In [4]: %timeit replaced = map[lambda x: x.replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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 yếu tố cụ thể trong danh sách Python?

[expression for variable_name in iterable if condition]

Dưới đây là các phương pháp để thay thế các giá trị trong danh sách ..

[variable_name for variable_name in iterable if condition]

Sử dụng lập chỉ mục danh sách ..

Sử dụng cho vòng lặp ..

  • Sử dụng trong khi vòng lặp ..

Sử dụng chức năng Lambda ..

  • Sử dụng danh sách cắt ..

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

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ể

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

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ố

  • Sử dụng trong khi vòng lặp ..

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

Sử dụng chức năng Lambda ..

[['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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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', ''].replace['324', ''].replace['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['', 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 yếu tố cụ thể trong danh sách Python?

Dưới đây là các phương pháp để thay thế các giá trị trong danh sách ...
Sử dụng lập chỉ mục danh sách ..
Sử dụng cho vòng lặp ..
Sử dụng trong khi vòng lặp ..
Sử dụng chức năng Lambda ..
Sử dụng danh sách cắt ..

Làm thế nào để bạn thay thế một ký tự trong một chuỗi trong một danh sách?

Thay thế một chuỗi cụ thể trong một 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 thay thế [] 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 thay thế [] sẽ không thay đổi nó, vì vậy bạn không cần chọn một phần tử có điều kiện nếu điều kiện.use the string method replace[] for each element with the list comprehension. If there is no string to be replaced, applying replace[] will not change it, so you don't need to select an element with if condition .

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

Trong Python, The.thay thế [] phương thức và re.Hàm Sub [] thường được sử dụng để làm sạch văn bản bằng cách loại bỏ các chuỗi hoặc chuỗi con hoặc thay thế chúng.

Bạn có thể thay đổi các mục trong danh sách Python không?

Bạn có thể sửa đổi một mục trong danh sách trong Python bằng cách tham khảo chỉ mục của mục..

Bài Viết Liên Quan

Chủ Đề