Hướng dẫn how do you remove part of a string in python? - làm thế nào để bạn loại bỏ một phần của một chuỗi trong python?

Đôi khi chúng tôi muốn loại bỏ tất cả các lần xuất hiện của một ký tự khỏi một chuỗi. Có hai cách phổ biến để đạt được điều này.

Python loại bỏ ký tự khỏi chuỗi

  1. Sử dụng hàm thay thế chuỗi ()
  2. Sử dụng hàm dịch ()

Python loại bỏ ký tự khỏi chuỗi bằng cách sử dụng thay thế ()

Chúng ta có thể sử dụng hàm thay thế chuỗi () để thay thế một ký tự bằng một ký tự mới. Nếu chúng tôi cung cấp một chuỗi trống làm đối số thứ hai, thì ký tự sẽ bị xóa khỏi chuỗi. Lưu ý rằng chuỗi là bất biến trong Python, vì vậy hàm này sẽ trả về một chuỗi mới và chuỗi ban đầu sẽ không thay đổi.

s = 'abc12321cba'

print(s.replace('a', ''))

Đầu ra:

s = 'abc12321cba'

print(s.translate({ord('a'): None}))
0

Python loại bỏ ký tự khỏi chuỗi bằng cách sử dụng dịch ()

Chức năng Python Chuỗi dịch () Thay thế từng ký tự trong chuỗi bằng bảng dịch đã cho. Chúng tôi phải chỉ định điểm mã Unicode cho ký tự và ‘không có cách thay thế để xóa nó khỏi chuỗi kết quả. Chúng ta có thể sử dụng hàm ord () để có được điểm mã unicode của một ký tự.

s = 'abc12321cba'

print(s.translate({ord('a'): None}))

Đầu ra:

s = 'abc12321cba'

print(s.translate({ord('a'): None}))
0 Nếu bạn muốn thay thế nhiều ký tự, điều đó có thể được thực hiện dễ dàng bằng cách sử dụng trình lặp. Hãy cùng xem cách loại bỏ các ký tự ‘A,’ B, và ‘C, khỏi một chuỗi.

s = 'abc12321cba'

print(s.translate({ord(i): None for i in 'abc'}))

Đầu ra:

s = 'abc12321cba'

print(s.translate({ord('a'): None}))
2

Loại bỏ khoảng trắng khỏi chuỗi

s = ' 1 2 3 4 '
print(s.replace(' ', ''))  # 1234
print(s.translate({ord(i): None for i in ' '}))  # 1234

Python loại bỏ dòng mới khỏi chuỗi

s = 'ab\ncd\nef'
print(s.replace('\n', ''))
print(s.translate({ord('\n'): None}))

Xóa con khỏi chuỗi

Chuỗi thay thế () đối số hàm là chuỗi. Hãy để xem cách loại bỏ một từ khỏi một chuỗi.

s = 'ab12abc34ba'
print(s.replace('ab', ''))

Đầu ra:

s = 'abc12321cba'

print(s.translate({ord('a'): None}))
3

Xóa số lần được chỉ định

Chúng tôi cũng có thể vượt qua tham số thứ ba trong hàm thay thế () để chỉ định số lần thay thế nên được thực hiện.

s = 'abababab'
print(s.replace('a', 'A', 2))

Đầu ra:

s = 'abc12321cba'

print(s.translate({ord('a'): None}))
4

Bạn có thể kiểm tra toàn bộ tập lệnh Python và nhiều ví dụ về Python từ Kho lưu trữ GitHub của chúng tôi.

Nếu bạn cần loại bỏ một số đầu của một chuỗi nếu nó tồn tại không làm gì cả. Giải pháp tốt nhất của tôi. Bạn có thể sẽ muốn sử dụng một trong 2 triển khai đầu tiên tuy nhiên tôi đã bao gồm lần thứ 3 để hoàn thiện.

Cho một hậu tố không đổi:

def remove_suffix(v, s):
    return v[:-len(s)] if v.endswith(s) else v
remove_suffix("abc.com", ".com") == 'abc'
remove_suffix("abc", ".com") == 'abc'

Cho một regex:

def remove_suffix_compile(suffix_pattern):
    r = re.compile(f"(.*?)({suffix_pattern})?$")
    return lambda v: r.match(v)[1]
remove_domain = remove_suffix_compile(r"\.[a-zA-Z0-9]{3,}")
remove_domain("abc.com") == "abc"
remove_domain("sub.abc.net") == "sub.abc"
remove_domain("abc.") == "abc."
remove_domain("abc") == "abc"

Đối với một bộ sưu tập các hậu tố không đổi, cách nhanh nhất không có triệu chứng cho một số lượng lớn các cuộc gọi:

def remove_suffix_preprocess(*suffixes):
    suffixes = set(suffixes)
    try:
        suffixes.remove('')
    except KeyError:
        pass

    def helper(suffixes, pos):
        if len(suffixes) == 1:
            suf = suffixes[0]
            l = -len(suf)
            ls = slice(0, l)
            return lambda v: v[ls] if v.endswith(suf) else v
        si = iter(suffixes)
        ml = len(next(si))
        exact = False
        for suf in si:
            l = len(suf)
            if -l == pos:
                exact = True
            else:
                ml = min(len(suf), ml)
        ml = -ml
        suffix_dict = {}
        for suf in suffixes:
            sub = suf[ml:pos]
            if sub in suffix_dict:
                suffix_dict[sub].append(suf)
            else:
                suffix_dict[sub] = [suf]
        if exact:
            del suffix_dict['']
            for key in suffix_dict:
                suffix_dict[key] = helper([s[:pos] for s in suffix_dict[key]], None)
            return lambda v: suffix_dict.get(v[ml:pos], lambda v: v)(v[:pos])
        else:
            for key in suffix_dict:
                suffix_dict[key] = helper(suffix_dict[key], ml)
            return lambda v: suffix_dict.get(v[ml:pos], lambda v: v)(v)
    return helper(tuple(suffixes), None)
domain_remove = remove_suffix_preprocess(".com", ".net", ".edu", ".uk", '.tv', '.co.uk', '.org.uk')

Cái cuối cùng có lẽ nhanh hơn đáng kể trong pypy sau đó là CPython. Biến thể Regex có khả năng nhanh hơn điều này đối với hầu như tất cả các trường hợp không liên quan đến các từ điển khổng lồ của các hậu tố tiềm năng không thể dễ dàng được biểu diễn dưới dạng regex ít nhất là trong Cpython.

Trong PYPY, biến thể Regex gần như chắc chắn chậm hơn đối với số lượng lớn các cuộc gọi hoặc chuỗi dài ngay cả khi mô -đun RE sử dụng động cơ Regex biên dịch DFA làm phần lớn chi phí của Lambda sẽ được JIT tối ưu hóa.

Tuy nhiên, trong Cpython, thực tế là mã C chạy của bạn cho Regex so sánh gần như chắc chắn vượt xa các lợi thế thuật toán của phiên bản thu thập hậu tố trong hầu hết các trường hợp.

Chỉnh sửa: https://m.xkcd.com/859/

Làm cách nào để xóa một số văn bản nhất định khỏi một chuỗi trong Python?

Sử dụng 'str.Thay thế (), chúng ta có thể thay thế một ký tự cụ thể.Nếu chúng ta muốn xóa ký tự cụ thể đó, hãy thay thế ký tự đó bằng một chuỗi trống.STR.Phương thức thay thế () sẽ thay thế tất cả các lần xuất hiện của ký tự cụ thể được đề cập.replace that character with an empty string. The str. replace() method will replace all occurrences of the specific character mentioned.

Làm cách nào để loại bỏ một phần của chuỗi?

Chúng ta có thể xóa một phần của chuỗi bằng hàm thay thế ().Chúng ta có thể sử dụng chức năng này nếu chúng ta biết ký tự chính xác của chuỗi để xóa.Xóa (): Hàm này thay thế tất cả các lần xuất hiện của một chuỗi con trong một chuỗi con mới.using REPLACE() function. We can use this function if we know the exact character of the string to remove. REMOVE(): This function replaces all occurrences of a substring within a new substring.

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

Để phân chia một chuỗi và loại bỏ khoảng trắng:..
Sử dụng str.phương thức chia () để chia chuỗi thành một danh sách ..
Sử dụng danh sách hiểu để lặp lại trong danh sách ..
Trên mỗi lần lặp, sử dụng str.Phương thức dải () để loại bỏ khoảng trắng hàng đầu và dấu vết ..