Hướng dẫn python remove text in parentheses - python xóa văn bản trong dấu ngoặc đơn

Tôi có một chuỗi văn bản rất dài với

>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
2 và
>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
3 trong đó. Tôi đang cố gắng loại bỏ các ký tự giữa dấu ngoặc đơn và dấu ngoặc nhưng tôi không thể tìm ra cách.

Danh sách này tương tự như thế này:

x = "This is a sentence. (once a day) [twice a day]"

Danh sách này không phải là những gì tôi đang làm việc nhưng rất giống nhau và ngắn hơn rất nhiều.

Hướng dẫn python remove text in parentheses - python xóa văn bản trong dấu ngoặc đơn

Hỏi ngày 30 tháng 1 năm 2013 lúc 4:46Jan 30, 2013 at 4:46

2

Bạn có thể sử dụng chức năng Re.Sub.

>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'

Nếu bạn muốn xóa [] và (), bạn có thể sử dụng mã này:

>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("[\(\[].*?[\)\]]", "", x)
'This is a sentence.  '

Quan trọng: Mã này sẽ không hoạt động với các biểu tượng lồng nhau

Giải trình

Các nhóm Regex đầu tiên

>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
4 hoặc
>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
5 thành nhóm 1 (bằng cách xung quanh nó với dấu ngoặc đơn) và
>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
6 hoặc
>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
7 thành nhóm 2, phù hợp với các nhóm này và tất cả các ký tự nằm giữa chúng. Sau khi kết hợp, phần phù hợp được thay thế bằng nhóm 1 và 2, để lại chuỗi cuối cùng không có gì bên trong ngoặc. Regex thứ hai là tự giải thích từ điều này -> khớp với mọi thứ và thay thế với chuỗi trống.

- Được sửa đổi từ bình luận của Ajay Thomas

Hướng dẫn python remove text in parentheses - python xóa văn bản trong dấu ngoặc đơn

wjandrea

25.1k8 Huy hiệu vàng53 Huy hiệu bạc73 Huy hiệu đồng8 gold badges53 silver badges73 bronze badges

Đã trả lời ngày 30 tháng 1 năm 2013 lúc 8:10Jan 30, 2013 at 8:10

JVALLVERJVALLVERjvallver

2.0822 Huy hiệu vàng11 Huy hiệu bạc19 Huy hiệu đồng2 gold badges11 silver badges19 bronze badges

5

Chạy tập lệnh này, nó hoạt động ngay cả với giá đỡ lồng nhau. Sử dụng các bài kiểm tra logic cơ bản.
Uses basic logical tests.

def a(test_str):
    ret = ''
    skip1c = 0
    skip2c = 0
    for i in test_str:
        if i == '[':
            skip1c += 1
        elif i == '(':
            skip2c += 1
        elif i == ']' and skip1c > 0:
            skip1c -= 1
        elif i == ')'and skip2c > 0:
            skip2c -= 1
        elif skip1c == 0 and skip2c == 0:
            ret += i
    return ret

x = "ewq[a [(b] ([c))]] This is a sentence. (once a day) [twice a day]"
x = a(x)
print x
print repr(x)

Chỉ cần bạn không chạy nó, đây là đầu ra:
Here's the output:

>>> 
ewq This is a sentence.  
'ewq This is a sentence.  ' 

Đã trả lời ngày 30 tháng 1 năm 2013 lúc 6:42Jan 30, 2013 at 6:42

Pradyunsgpradyunsgpradyunsg

17.1k11 Huy hiệu vàng42 Huy hiệu bạc92 Huy hiệu Đồng11 gold badges42 silver badges92 bronze badges

0

Đây là một giải pháp tương tự như câu trả lời của @pradyunsg (nó hoạt động với các giá đỡ lồng nhau tùy ý):

def remove_text_inside_brackets(text, brackets="()[]"):
    count = [0] * (len(brackets) // 2) # count open/close brackets
    saved_chars = []
    for character in text:
        for i, b in enumerate(brackets):
            if character == b: # found bracket
                kind, is_close = divmod(i, 2)
                count[kind] += (-1)**is_close # `+1`: open, `-1`: close
                if count[kind] < 0: # unbalanced bracket
                    count[kind] = 0  # keep it
                else:  # found bracket to remove
                    break
        else: # character is not a [balanced] bracket
            if not any(count): # outside brackets
                saved_chars.append(character)
    return ''.join(saved_chars)

print(repr(remove_text_inside_brackets(
    "This is a sentence. (once a day) [twice a day]")))
# -> 'This is a sentence.  '

Đã trả lời ngày 30 tháng 1 năm 2013 lúc 12:01Jan 30, 2013 at 12:01

JFSJFSjfs

384K183 Huy hiệu vàng949 Huy hiệu bạc1621 Huy hiệu Đồng183 gold badges949 silver badges1621 bronze badges

2

Điều này sẽ làm việc cho dấu ngoặc đơn. Biểu thức chính quy sẽ "tiêu thụ" văn bản mà nó đã khớp để nó không hoạt động cho dấu ngoặc đơn lồng nhau.

import re
regex = re.compile(".*?\((.*?)\)")
result = re.findall(regex, mystring)

Hoặc điều này sẽ tìm thấy một bộ dấu ngoặc đơn, chỉ cần lặp lại để tìm thêm:

start = mystring.find("(")
end = mystring.find(")")
if start != -1 and end != -1:
  result = mystring[start+1:end]

MOOT

2.0762 Huy hiệu vàng16 Huy hiệu bạc14 Huy hiệu đồng2 gold badges16 silver badges14 bronze badges

Đã trả lời ngày 30 tháng 1 năm 2013 lúc 5:14Jan 30, 2013 at 5:14

mbowdenmbowdenmbowden

6776 Huy hiệu bạc7 Huy hiệu Đồng6 silver badges7 bronze badges

2

Bạn có thể chia, lọc và tham gia lại chuỗi. Nếu dấu ngoặc của bạn được xác định rõ, mã sau sẽ làm.

import re
x = "".join(re.split("\(|\)|\[|\]", x)[::2])

Đã trả lời ngày 1 tháng 4 năm 2021 lúc 8:40Apr 1, 2021 at 8:40

user3592579user3592579user3592579

4545 Huy hiệu bạc5 Huy hiệu Đồng5 silver badges5 bronze badges

2

Bạn có thể thử điều này. Có thể loại bỏ khung và nội dung tồn tại bên trong nó.

 import re
    x = "This is a sentence. (once a day) [twice a day]"
    x = re.sub("\(.*?\)|\[.*?\]","",x)
    print(x)

Mong đợi ouput:

>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
0

Đã trả lời ngày 11 tháng 7 lúc 9:06Jul 11 at 9:06

Hướng dẫn python remove text in parentheses - python xóa văn bản trong dấu ngoặc đơn

Avinash Rautavinash RautAvinash Raut

1.70616 huy hiệu bạc24 Huy hiệu đồng16 silver badges24 bronze badges

Regex

>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
8 sẽ loại bỏ nội dung khung bằng cách tìm các cặp, đầu tiên nó loại bỏ paranthesis và sau đó là dấu ngoặc vuông. Tôi cũng hoạt động tốt cho các khung lồng nhau vì nó hoạt động theo trình tự. Tất nhiên, nó sẽ bị phá vỡ trong trường hợp kịch bản khung xấu.

>>> import re 
>>> x = "This is a sentence. (once a day) [twice a day]"
>>> re.sub("([\(\[]).*?([\)\]])", "\g<1>\g<2>", x)
'This is a sentence. () []'
1

Đã trả lời 7 giờ trước7 hours ago

Hướng dẫn python remove text in parentheses - python xóa văn bản trong dấu ngoặc đơn

Làm thế nào để bạn loại bỏ văn bản bên trong dấu ngoặc đơn trong Python?

Phương pháp 1: Chúng tôi sẽ sử dụng phương thức thư viện RE (biểu thức chính quy). sub (): Chức năng của phương thức sub () là nó sẽ tìm thấy mẫu cụ thể và thay thế nó bằng một số chuỗi. Phương pháp này sẽ tìm thấy chuỗi con có trong giá đỡ hoặc dấu ngoặc đơn và thay thế nó bằng các giá đỡ trống.use sub() method of re library (regular expressions). sub(): The functionality of sub() method is that it will find the specific pattern and replace it with some string. This method will find the substring which is present in the brackets or parenthesis and replace it with empty brackets.

Làm thế nào để bạn loại bỏ dấu ngoặc đơn khỏi dữ liệu trong Python?

Để loại bỏ dấu ngoặc đơn khỏi chuỗi bằng python, cách dễ nhất là sử dụng hàm python sub () từ mô -đun RE.Nếu dấu ngoặc đơn của bạn ở đầu và cuối chuỗi của bạn, bạn cũng có thể sử dụng hàm Dải ().use the Python sub() function from the re module. If your parentheses are on the beginning and end of your string, you can also use the strip() function.

Làm thế nào để bạn xóa văn bản trong Python?

Dịch () là một phương thức khác có thể được sử dụng để loại bỏ ký tự khỏi chuỗi trong Python.Dịch () trả về một chuỗi sau khi xóa các giá trị được truyền trong bảng.Ngoài ra, hãy nhớ rằng để xóa một ký tự khỏi chuỗi bằng cách sử dụng dịch (), bạn phải thay thế nó bằng không và không "". is another method that can be used to remove a character from a string in Python. translate() returns a string after removing the values passed in the table. Also, remember that to remove a character from a string using translate() you have to replace it with None and not "" .

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

Loại bỏ các ký tự đặc biệt bao gồm các chuỗi sử dụng python isalnum.Python có một phương thức chuỗi đặc biệt,.isalnum (), trả về true nếu chuỗi là một ký tự alpha-numeric và trả về sai nếu không.Chúng ta có thể sử dụng điều này, để lặp qua một chuỗi và nối vào một chuỗi mới, chỉ có các ký tự alpha-numeric.Using Python isalnum. Python has a special string method, . isalnum() , which returns True if the string is an alpha-numeric character, and returns False if it is not. We can use this, to loop over a string and append, to a new string, only alpha-numeric characters.