Hướng dẫn remove string regex python - xóa chuỗi regex python

If a path may contain parentheses then the

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
0 regex is not enough:

import os, re

def remove_parenthesized_chunks(path, safeext=True, safedir=True):
    dirpath, basename = os.path.split(path) if safedir else ('', path)
    name, ext = os.path.splitext(basename) if safeext else (basename, '')
    name = re.sub(r'\(.*?\)', '', name)
    return os.path.join(dirpath, name+ext)

By default the function preserves parenthesized chunks in directory and extention parts of the path.

Example:

>>> f = remove_parenthesized_chunks
>>> f("Example_file_(extra_descriptor).ext")
'Example_file_.ext'
>>> path = r"c:\dir_(important)\example(extra).ext(untouchable)"
>>> f(path)
'c:\\dir_(important)\\example.ext(untouchable)'
>>> f(path, safeext=False)
'c:\\dir_(important)\\example.ext'
>>> f(path, safedir=False)
'c:\\dir_\\example.ext(untouchable)'
>>> f(path, False, False)
'c:\\dir_\\example.ext'
>>> f(r"c:\(extra)\example(extra).ext", safedir=False)
'c:\\\\example.ext'

Trong Python 2.*, cho đến nay, cách tiếp cận nhanh nhất là phương pháp

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
7:

Nội dung chính ShowShow

  • Xóa tất cả các lần xuất hiện của một ký tự khỏi chuỗi bằng cách sử dụng regex
  • Xóa nhiều ký tự khỏi chuỗi bằng Regex trong Python
  • Xóa nhiều ký tự khỏi chuỗi bằng Regex trong Python
  • Nó đã loại bỏ tất cả các lần xuất hiện của nhân vật ‘s,‘ A và và I, từ chuỗi.
  • Trong trường hợp này, chúng tôi sẽ tạo mẫu của mình bằng cách tham gia tất cả các ký tự trong chuỗi và hàm sử dụng phụ () để xóa các ký tự này khỏi chuỗi,
  • Xóa tất cả sự xuất hiện của một ký tự khỏi chuỗi bằng cách sử dụng dịch ()
  • Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của nhân vật, s, ‘A, &’ i, từ chuỗi. Vì vậy, chúng tôi sẽ chuyển một bảng dịch sang hàm dịch (), trong đó các ký tự, s, ‘A, & I, sẽ được ánh xạ tới không có gì, tức là.
  • Nó trả về một bản sao của chuỗi bằng cách thay thế tất cả các lần xuất hiện của Sub_String bằng replet.
  • Làm cách nào để loại bỏ bảng chữ cái khỏi một chuỗi trong Python?
  • Làm thế nào để bạn loại bỏ một ký tự cụ thể khỏi một chuỗi trong Python Regex?
  • Làm cách nào để loại bỏ một ký tự cụ thể khỏi một chuỗi trong regex?
  • Làm cách nào để loại bỏ tất cả các ký tự khỏi một chuỗi trong Python?

>>> x='aaa12333bb445bb54b5b52'
>>> import string
>>> all=string.maketrans('','')
>>> nodigs=all.translate(all, string.digits)
>>> x.translate(all, nodigs)
'1233344554552'
>>> 
$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
8 tạo ra một bảng dịch (một chuỗi có độ dài 256) trong trường hợp này giống như
$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
9 (chỉ nhanh hơn để thực hiện ;-).
$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
7 áp dụng bảng dịch (ở đây không liên quan vì
import string

class Del:
  def __init__(self, keep=string.digits):
    self.comp = dict((ord(c),c) for c in keep)
  def __getitem__(self, k):
    return self.comp.get(k)

DD = Del()

x='aaa12333bb445bb54b5b52'
x.translate(DD)
1 về cơ bản có nghĩa là danh tính) và xóa các ký tự có trong đối số thứ hai - phần chính.
$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
7 hoạt động rất khác nhau trên các chuỗi Unicode (và các chuỗi trong Python 3-Tôi mong muốn những câu hỏi được chỉ định là sự phát hành chính của Python được quan tâm!)-không hoàn toàn đơn giản, không hoàn toàn nhanh như vậy, mặc dù vẫn có thể sử dụng được.do wish questions specified which major-release of Python is of interest!) -- not quite this simple, not quite this fast, though still quite usable.do wish questions specified which major-release of Python is of interest!) -- not quite this simple, not quite this fast, though still quite usable.

Quay lại 2.*, chênh lệch hiệu suất rất ấn tượng ...:

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop

Tăng tốc mọi thứ tăng 7-8 lần hầu như không phải là đậu phộng, vì vậy phương pháp

import string

class Del:
  def __init__(self, keep=string.digits):
    self.comp = dict((ord(c),c) for c in keep)
  def __getitem__(self, k):
    return self.comp.get(k)

DD = Del()

x='aaa12333bb445bb54b5b52'
x.translate(DD)
3 rất đáng để biết và sử dụng. Cách tiếp cận không phổ biến khác ...:
$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop

chậm hơn 50% so với RE, vì vậy phương pháp

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
7 đánh bại nó theo một thứ tự cường độ.

Trong Python 3, hoặc cho Unicode, bạn cần phải vượt qua

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
7 một ánh xạ (với các thứ tự, không phải các ký tự trực tiếp, làm khóa) trả về
import string

class Del:
  def __init__(self, keep=string.digits):
    self.comp = dict((ord(c),c) for c in keep)
  def __getitem__(self, k):
    return self.comp.get(k)

DD = Del()

x='aaa12333bb445bb54b5b52'
x.translate(DD)
6 cho những gì bạn muốn xóa. Đây là một cách thuận tiện để thể hiện điều này để xóa "mọi thứ nhưng" một vài ký tự:
import string

class Del:
  def __init__(self, keep=string.digits):
    self.comp = dict((ord(c),c) for c in keep)
  def __getitem__(self, k):
    return self.comp.get(k)

DD = Del()

x='aaa12333bb445bb54b5b52'
x.translate(DD)

Cũng phát ra

import string

class Del:
  def __init__(self, keep=string.digits):
    self.comp = dict((ord(c),c) for c in keep)
  def __getitem__(self, k):
    return self.comp.get(k)

DD = Del()

x='aaa12333bb445bb54b5b52'
x.translate(DD)
7. Tuy nhiên, đặt cái này vào xx.py mà chúng ta có ...:
>>> f = remove_parenthesized_chunks
>>> f("Example_file_(extra_descriptor).ext")
'Example_file_.ext'
>>> path = r"c:\dir_(important)\example(extra).ext(untouchable)"
>>> f(path)
'c:\\dir_(important)\\example.ext(untouchable)'
>>> f(path, safeext=False)
'c:\\dir_(important)\\example.ext'
>>> f(path, safedir=False)
'c:\\dir_\\example.ext(untouchable)'
>>> f(path, False, False)
'c:\\dir_\\example.ext'
>>> f(r"c:\(extra)\example(extra).ext", safedir=False)
'c:\\\\example.ext'
7

... Điều này cho thấy lợi thế hiệu suất biến mất, đối với loại nhiệm vụ "xóa" này và trở thành giảm hiệu suất.

Nếu bạn đang có một chuỗi với các ký tự đặc biệt và muốn xóa/thay thế chúng thì bạn có thể sử dụng Regex cho điều đó. Sử dụng mã này: regex.replace (chuỗi của bạn, @"[^0-9a-za-z]+", "")

Làm cách nào để loại bỏ tất cả các ký tự khỏi một chuỗi trong Python?

>>> f = remove_parenthesized_chunks
>>> f("Example_file_(extra_descriptor).ext")
'Example_file_.ext'
>>> path = r"c:\dir_(important)\example(extra).ext(untouchable)"
>>> f(path)
'c:\\dir_(important)\\example.ext(untouchable)'
>>> f(path, safeext=False)
'c:\\dir_(important)\\example.ext'
>>> f(path, safedir=False)
'c:\\dir_\\example.ext(untouchable)'
>>> f(path, False, False)
'c:\\dir_\\example.ext'
>>> f(r"c:\(extra)\example(extra).ext", safedir=False)
'c:\\\\example.ext'
8

Nó trả về một chuỗi mới. Chuỗi mới này có được bằng cách thay thế tất cả các lần xuất hiện của mẫu đã cho trong chuỗi bằng một chuỗi thay thế. Nếu mẫu không được tìm thấy trong chuỗi, thì nó sẽ trả về cùng một chuỗi.

Hãy để sử dụng điều này để xóa các ký tự khỏi chuỗi,

Quảng cáo

Xóa tất cả các lần xuất hiện của một ký tự khỏi chuỗi bằng cách sử dụng regex

Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của ký tự từ chuỗi. Vì vậy, chúng ta cần truyền một mẫu như vậy trong hàm sub (), phù hợp với tất cả các lần xuất hiện của ký tự trong chuỗi đã cho. Sau đó, hàm sub () sẽ thay thế tất cả các ký tự đó bằng một chuỗi trống, tức là.

>>> f = remove_parenthesized_chunks
>>> f("Example_file_(extra_descriptor).ext")
'Example_file_.ext'
>>> path = r"c:\dir_(important)\example(extra).ext(untouchable)"
>>> f(path)
'c:\\dir_(important)\\example.ext(untouchable)'
>>> f(path, safeext=False)
'c:\\dir_(important)\\example.ext'
>>> f(path, safedir=False)
'c:\\dir_\\example.ext(untouchable)'
>>> f(path, False, False)
'c:\\dir_\\example.ext'
>>> f(r"c:\(extra)\example(extra).ext", safedir=False)
'c:\\\\example.ext'
9

Đầu ra

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
0

Nó đã loại bỏ tất cả các lần xuất hiện của ký tự ’S khỏi chuỗi.

Xóa nhiều ký tự khỏi chuỗi bằng Regex trong Python

Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của nhân vật ’s,‘ A, và ’i, từ chuỗi. Vì vậy, chúng ta cần vượt qua một mẫu như vậy trong hàm sub (), phù hợp với tất cả các lần xuất hiện của ký tự, s, ’a &’ i, trong chuỗi đã cho. Sau đó, hàm sub () sẽ thay thế tất cả các ký tự đó bằng một chuỗi trống, tức là.

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
1

Đầu ra

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
2

Nó đã loại bỏ tất cả các lần xuất hiện của ký tự ’S khỏi chuỗi.

Xóa nhiều ký tự khỏi chuỗi bằng Regex trong Python

Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của nhân vật ’s,‘ A, và ’i, từ chuỗi. Vì vậy, chúng ta cần vượt qua một mẫu như vậy trong hàm sub (), phù hợp với tất cả các lần xuất hiện của ký tự, s, ’a &’ i, trong chuỗi đã cho. Sau đó, hàm sub () sẽ thay thế tất cả các ký tự đó bằng một chuỗi trống, tức là.

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop
0

Nó đã loại bỏ tất cả các lần xuất hiện của nhân vật ‘s,‘ A và và I, từ chuỗi.

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop
1

Output:

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
2

Nó đã loại bỏ tất cả các lần xuất hiện của ký tự ’S khỏi chuỗi.

Xóa nhiều ký tự khỏi chuỗi bằng Regex trong Python

Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của nhân vật ’s,‘ A, và ’i, từ chuỗi. Vì vậy, chúng ta cần vượt qua một mẫu như vậy trong hàm sub (), phù hợp với tất cả các lần xuất hiện của ký tự, s, ’a &’ i, trong chuỗi đã cho. Sau đó, hàm sub () sẽ thay thế tất cả các ký tự đó bằng một chuỗi trống, tức là.

Nó đã loại bỏ tất cả các lần xuất hiện của nhân vật ‘s,‘ A và và I, từ chuỗi.

Xóa các ký tự trong danh sách từ chuỗi trong Python.

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop
3

Output:

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
0

Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của ký tự, ‘A, và‘ I, từ chuỗi và tất cả các ký tự này đều nằm trong một danh sách, tức là.

Trong trường hợp này, chúng tôi sẽ tạo mẫu của mình bằng cách tham gia tất cả các ký tự trong chuỗi và hàm sử dụng phụ () để xóa các ký tự này khỏi chuỗi,

Xóa các ký tự khỏi chuỗi bằng cách sử dụng dịch ()

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop
5

Output:

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
2

Trong Python, Class Str cung cấp một hàm dịch (bảng). Nó thay thế các ký tự trong chuỗi dựa trên ánh xạ được cung cấp trong bảng dịch. & Nbsp; Hãy để sử dụng điều này để xóa đơn hoặc nhiều ký tự khỏi chuỗi,

Xóa tất cả sự xuất hiện của một ký tự khỏi chuỗi bằng cách sử dụng dịch ()

Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của ký tự từ chuỗi. Cho rằng chúng tôi sẽ chuyển một bảng dịch sang hàm dịch (). Trong bảng dịch, ký tự sẽ được ánh xạ tới không có ai, tức là.

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop
7

Nó sẽ thay thế tất cả các lần xuất hiện của ký tự ’s mà không có ai trong chuỗi, tức là nó đã loại bỏ tất cả các lần xuất hiện của ký tự từ chuỗi.

Xóa nhiều ký tự khỏi chuỗi bằng cách sử dụng dịch ()

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop
8

Output:

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
0

Giả sử chúng ta muốn xóa tất cả các lần xuất hiện của nhân vật, s, ‘A, &’ i, từ chuỗi. Vì vậy, chúng tôi sẽ chuyển một bảng dịch sang hàm dịch (), trong đó các ký tự, s, ‘A, & I, sẽ được ánh xạ tới không có gì, tức là.

Nó sẽ loại bỏ tất cả các lần xuất hiện của các ký tự ‘S,‘ A, & ’I, từ chuỗi.

$ python -mtimeit -s'import string; all=string.maketrans("", ""); nodig=all.translate(all, string.digits); x="aaa12333bb445bb54b5b52"' 'x.translate(all, nodig)'
1000000 loops, best of 3: 1.04 usec per loop
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'
100000 loops, best of 3: 7.9 usec per loop
0

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

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
1

Output:

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
2

Trong Python, lớp str cung cấp một hàm thay thế () tức là.

Nó trả về một bản sao của chuỗi bằng cách thay thế tất cả các lần xuất hiện của Sub_String bằng replet.

Hãy để sử dụng để loại bỏ tất cả sự xuất hiện của một ký tự ’s từ chuỗi,

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
3

Output:

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
2

Xóa các ký tự khỏi chuỗi bằng cách sử dụng biểu thức Join () và Trình tạo

Giả sử chúng ta có một danh sách các ký tự, tức là.

Bây giờ để xóa tất cả các lần xuất hiện của các ký tự này khỏi chuỗi. Chúng ta có thể lặp lại từng ký tự trong chuỗi và tham gia trở lại ngoại trừ các ký tự trong danh sách, tức là.

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
5

Output:

$ python -mtimeit -s'x="aaa12333bb445bb54b5b52"' '"".join(i for i in x if i.isdigit())'
100000 loops, best of 3: 11.5 usec per loop
6

Làm cách nào để loại bỏ bảng chữ cái khỏi một chuỗi trong Python?

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 chức năng String thay thế () để 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.using replace() We can use string replace() function to replace a character with a new character. If we provide an empty string as the second argument, then the character will get removed from the string.using replace() We can use string replace() function to replace a character with a new character. If we provide an empty string as the second argument, then the character will get removed from the string.

Làm thế nào để bạn loại bỏ một ký tự cụ thể khỏi một chuỗi trong Python Regex?

Sử dụng python regex () Các biểu thức chính quy thườngký tự không mong muốn từ chuỗi có ký tự trống bằng cách sử dụng hàm sub ().replacing the unwanted character from string with blank character by using sub() function.replacing the unwanted character from string with blank character by using sub() function.

Làm cách nào để loại bỏ một ký tự cụ thể khỏi một chuỗi trong regex?

Nếu bạn đang có một chuỗi với các ký tự đặc biệt và muốn xóa/thay thế chúng thì bạn có thể sử dụng Regex cho điều đó.Sử dụng mã này: regex.replace (chuỗi của bạn, @"[^0-9a-za-z]+", "")Regex.Replace(your String, @"[^0-9a-zA-Z]+", "")Regex. Replace(your String, @"[^0-9a-zA-Z]+", "")

Làm cách nào để loại bỏ tất cả các ký tự khỏi một chuỗi trong Python?

Python loại bỏ ký tự khỏi một chuỗi - cách xóa các ký tự khỏi chuỗi.Trong Python, bạn có thể sử dụng các phương thức thay thế () và dịch () để chỉ định ký tự nào bạn muốn xóa khỏi chuỗi và trả về kết quả chuỗi được sửa đổi mới.use the replace() and translate() methods to specify which characters you want to remove from a string and return a new modified string result.use the replace() and translate() methods to specify which characters you want to remove from a string and return a new modified string result.