Hướng dẫn python extract string between parentheses - chuỗi trích xuất python giữa các dấu ngoặc đơn

u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'

Tất cả những gì tôi cần là nội dung bên trong dấu ngoặc đơn.

nbro

Huy hiệu vàng 14,5K2727 gold badges104 silver badges188 bronze badges

Đã hỏi ngày 4 tháng 2 năm 2011 lúc 2:46Feb 4, 2011 at 2:46

user469652user469652user469652

46.6K57 Huy hiệu vàng128 Huy hiệu bạc165 Huy hiệu Đồng57 gold badges128 silver badges165 bronze badges

3

Nếu vấn đề của bạn thực sự chỉ đơn giản như vậy, bạn không cần regex:

s[s.find["["]+1:s.find["]"]]

Đã trả lời ngày 4 tháng 2 năm 2011 lúc 3:03Feb 4, 2011 at 3:03

4

Sử dụng

s[s.find["["]+1:s.find["]"]]
5:

>>> import re
>>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
>>> re.search[r'\[[.*?]\]',s].group[1]
u"date='2/xc2/xb2',time='/case/test.png'"

người sử dụng

5.1087 Huy hiệu vàng48 Huy hiệu bạc72 Huy hiệu Đồng7 gold badges48 silver badges72 bronze badges

Đã trả lời ngày 4 tháng 2 năm 2011 lúc 2:59Feb 4, 2011 at 2:59

Waanwaanwaan

1.0617 Huy hiệu bạc8 Huy hiệu đồng7 silver badges8 bronze badges

0

Nếu bạn muốn tìm thấy tất cả các sự kiện:

>>> re.findall['\[.*?\]',s]
[u"[date='2/xc2/xb2',time='/case/test.png']", u'[eee]']

>>> re.findall['\[[.*?]\]',s]
[u"date='2/xc2/xb2',time='/case/test.png'", u'eee']

Đã trả lời ngày 10 tháng 7 năm 2015 lúc 14:49Jul 10, 2015 at 14:49

4

Dựa trên câu trả lời của Tkerwin, nếu bạn tình cờ có dấu ngoặc như trongnested parentheses like in

st = "sum[[a+b]/[c+d]]"

Câu trả lời của anh ấy sẽ không hoạt động nếu bạn cần lấy mọi thứ giữa dấu ngoặc đơn đầu tiên và dấu ngoặc đơn cuối cùng để nhận

s[s.find["["]+1:s.find["]"]]
6, bởi vì tìm các tìm kiếm từ bên trái của chuỗi, và sẽ dừng ở dấu ngoặc đơn đầu tiên.first opening parenthesis and the last closing parenthesis to get
s[s.find["["]+1:s.find["]"]]
6, because find searches from the left of the string, and would stop at the first closing parenthesis.

Để khắc phục điều đó, bạn cần sử dụng

s[s.find["["]+1:s.find["]"]]
7 cho phần thứ hai của thao tác, vì vậy nó sẽ trở thành

st[st.find["["]+1:st.rfind["]"]]

Đã trả lời ngày 25 tháng 11 năm 2016 lúc 20:37Nov 25, 2016 at 20:37

FaustowfaustowFaustoW

6227 Huy hiệu bạc15 Huy hiệu Đồng7 silver badges15 bronze badges

1

import re

fancy = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'

print re.compile[ "\[[.*]\]" ].search[ fancy ].group[ 1 ]

KZH

19.2K12 Huy hiệu vàng71 Huy hiệu bạc96 Huy hiệu đồng12 gold badges71 silver badges96 bronze badges

Đã trả lời ngày 4 tháng 2 năm 2011 lúc 3:06Feb 4, 2011 at 3:06

contents_re = re.match[r'[^\[]*\[[?P[^\[]+]\]', data]
if contents_re:
    print[contents_re.groupdict[]['contents']]

Đã trả lời ngày 22 tháng 1 năm 2020 lúc 5:40Jan 22, 2020 at 5:40

Treadtreadtread

9.50416 Huy hiệu vàng90 Huy hiệu bạc155 Huy hiệu Đồng16 gold badges90 silver badges155 bronze badges

2

Không cần phải sử dụng regex .... chỉ cần sử dụng Danh sách cắt ...

string="[tidtkdgkxkxlgxlhxl] ¥£%#_¥#_¥#_¥#"
print[string[string.find["["]+1:string.find["]"]]]

Đã trả lời ngày 14 tháng 11 năm 2020 lúc 18:50Nov 14, 2020 at 18:50

1

Dưới đây là một số cách để trích xuất các chuỗi giữa các dấu ngoặc đơn trong gấu trúc với

s[s.find["["]+1:s.find["]"]]
8 regex [xem bản demo trực tuyến của nó] phù hợp với

  • s[s.find["["]+1:s.find["]"]]
    
    9 - A
    >>> import re
    >>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
    >>> re.search[r'\[[.*?]\]',s].group[1]
    u"date='2/xc2/xb2',time='/case/test.png'"
    
    0 Char
  • >>> import re
    >>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
    >>> re.search[r'\[[.*?]\]',s].group[1]
    u"date='2/xc2/xb2',time='/case/test.png'"
    
    1 - Sau đó bắt vào nhóm 1 bất kỳ một hoặc nhiều ký tự khác ngoài
    >>> import re
    >>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
    >>> re.search[r'\[[.*?]\]',s].group[1]
    u"date='2/xc2/xb2',time='/case/test.png'"
    
    0 và
    >>> import re
    >>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
    >>> re.search[r'\[[.*?]\]',s].group[1]
    u"date='2/xc2/xb2',time='/case/test.png'"
    
    3
  • >>> import re
    >>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
    >>> re.search[r'\[[.*?]\]',s].group[1]
    u"date='2/xc2/xb2',time='/case/test.png'"
    
    4 - A
    >>> import re
    >>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
    >>> re.search[r'\[[.*?]\]',s].group[1]
    u"date='2/xc2/xb2',time='/case/test.png'"
    
    3 char.

Trích xuất lần xuất hiện đầu tiên bằng cách sử dụng

>>> import re
>>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
>>> re.search[r'\[[.*?]\]',s].group[1]
u"date='2/xc2/xb2',time='/case/test.png'"
6: using
>>> import re
>>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
>>> re.search[r'\[[.*?]\]',s].group[1]
u"date='2/xc2/xb2',time='/case/test.png'"
6:

import pandas as pd
df = pd.DataFrame[{'Description':['some text [value 1] and [value 2]']}]
df['Values'] = df['Description'].str.extract[r'\[[[^[]]+]\]']
# => df['Values']
#    0    value 1
#    Name: Values, dtype: object

Trích xuất [tìm kiếm] Tất cả các lần xuất hiện bằng cách sử dụng

>>> import re
>>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
>>> re.search[r'\[[.*?]\]',s].group[1]
u"date='2/xc2/xb2',time='/case/test.png'"
7: using
>>> import re
>>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
>>> re.search[r'\[[.*?]\]',s].group[1]
u"date='2/xc2/xb2',time='/case/test.png'"
7:

s[s.find["["]+1:s.find["]"]]
0

Lưu ý rằng

>>> import re
>>> s = u'abcde[date=\'2/xc2/xb2\',time=\'/case/test.png\']'
>>> re.search[r'\[[.*?]\]',s].group[1]
u"date='2/xc2/xb2',time='/case/test.png'"
8 được sử dụng để tạo một chuỗi được phân tách bằng dấu phẩy trong danh sách các chuỗi kết quả. Bạn có thể điều chỉnh dấu phân cách này cho kịch bản của bạn.

Đã trả lời ngày 22 tháng 9 năm 2021 lúc 9:31Sep 22, 2021 at 9:31

Wiktor Stribiżewwiktor StribiżewWiktor Stribiżew

586K35 Huy hiệu vàng404 Huy hiệu bạc 508 Huy hiệu đồng35 gold badges404 silver badges508 bronze badges

Câu trả lời của Thesoulkiller là tuyệt vời. Chỉ trong trường hợp của tôi, tôi cần xử lý các dấu ngoặc đơn thêm và chỉ trích xuất từ ​​bên trong dấu ngoặc đơn. Một thay đổi rất nhỏ sẽ giải quyết vấn đề

s[s.find["["]+1:s.find["]"]]
1

Đã trả lời ngày 22 tháng 1 lúc 17:20Jan 22 at 17:20

Fjahanfjahanfjahan

1034 Huy hiệu bạc10 Huy hiệu đồng4 silver badges10 bronze badges

Testcase

s[s.find["["]+1:s.find["]"]]
2

kết quả

s[s.find["["]+1:s.find["]"]]
3

thực hiện

s[s.find["["]+1:s.find["]"]]
4

Đã trả lời ngày 13 tháng 6 lúc 12:11Jun 13 at 12:11

Nếu tôi không thiếu thứ gì đó, một bản sửa lỗi nhỏ cho @Tkerwin: s [s.find ["["]+1: s.rfind ["]"]]]

Tìm thấy thứ 2 phải là rfind để bạn bắt đầu tìm kiếm từ cuối chuỗi

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

Bài Viết Liên Quan

Chủ Đề