Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

490

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Giả sử tôi có một chuỗi

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
8 và tôi muốn trích xuất chỉ phần
import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
9.

Tôi chỉ biết những gì sẽ là một vài ký tự trực tiếp trước

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
0, và sau
>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
1 phần tôi quan tâm đến
>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
2.

Với

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
3 có thể làm một cái gì đó như thế này với một chuỗi:

echo "$STRING" | sed -e "s|.*AAA\(.*\)ZZZ.*|\1|"

Và điều này sẽ cho tôi

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
2 do đó.

Làm thế nào để làm điều tương tự trong Python?

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

Aran-Fey

36.6K11 Huy hiệu vàng96 Huy hiệu bạc141 Huy hiệu đồng11 gold badges96 silver badges141 bronze badges

hỏi ngày 12 tháng 1 năm 2011 lúc 9:14Jan 12, 2011 at 9:14

1

Sử dụng biểu thức chính quy - Tài liệu để tham khảo thêm

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234

or:

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234

CDMP

3004 Huy hiệu bạc9 Huy hiệu Đồng4 silver badges9 bronze badges

Đã trả lời ngày 12 tháng 1 năm 2011 lúc 9:18Jan 12, 2011 at 9:18

Eumiroeumiroeumiro

199K34 Huy hiệu vàng294 Huy hiệu bạc259 Huy hiệu Đồng34 gold badges294 silver badges259 bronze badges

13

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'

Sau đó, bạn cũng có thể sử dụng RegEXP với mô -đun RE, nếu bạn muốn, nhưng điều đó không cần thiết trong trường hợp của bạn.

Đã trả lời ngày 12 tháng 1 năm 2011 lúc 9:17Jan 12, 2011 at 9:17

Lennart Regebrolennart RegebroLennart Regebro

162K41 Huy hiệu vàng221 Huy hiệu bạc251 Huy hiệu Đồng41 gold badges221 silver badges251 bronze badges

5

biểu hiện thông thường

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)

Trên đây sẽ không thành công với

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
5 nếu không có "AAA" và "ZZZ" trong
>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
6

Phương thức chuỗi

your_text.partition("AAA")[2].partition("ZZZ")[0]

Trên đây sẽ trả về một chuỗi trống nếu "AAA" hoặc "ZZZ" không tồn tại trong

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
6.

Thử thách Python Python?

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

Tzottzottzot

89.3K29 Huy hiệu vàng137 Huy hiệu bạc201 Huy hiệu đồng29 gold badges137 silver badges201 bronze badges

4

Ngạc nhiên vì không ai đề cập đến điều này, đó là phiên bản nhanh của tôi cho các tập lệnh một lần:

>>> x = 'gfgfdAAA1234ZZZuijjk'
>>> x.split('AAA')[1].split('ZZZ')[0]
'1234'

Đã trả lời ngày 9 tháng 2 năm 2019 lúc 16:57Feb 9, 2019 at 16:57

Chú dài tóc tóc dàiUncle Long Hair

2.5292 Huy hiệu vàng21 Huy hiệu bạc31 Huy hiệu Đồng2 gold badges21 silver badges31 bronze badges

3

bạn có thể làm chỉ bằng một dòng mã

>>> import re

>>> re.findall(r'\d{1,5}','gfgfdAAA1234ZZZuijjk')

>>> ['1234']

Kết quả sẽ nhận được danh sách ...

Đã trả lời ngày 11 tháng 1 năm 2018 lúc 11:39Jan 11, 2018 at 11:39

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

Mahesh Guptamahesh GuptaMahesh Gupta

1.84611 huy hiệu bạc15 huy hiệu đồng11 silver badges15 bronze badges

import re
print re.search('AAA(.*?)ZZZ', 'gfgfdAAA1234ZZZuijjk').group(1)

Đã trả lời ngày 12 tháng 1 năm 2011 lúc 9:18Jan 12, 2011 at 9:18

Eumiroeumiroinfrared

199K34 Huy hiệu vàng294 Huy hiệu bạc259 Huy hiệu Đồng2 gold badges23 silver badges37 bronze badges

1

Sau đó, bạn cũng có thể sử dụng RegEXP với mô -đun RE, nếu bạn muốn, nhưng điều đó không cần thiết trong trường hợp của bạn.

>>> import re
>>> re.compile(".*AAA(.*)ZZZ.*").match("gfgfdAAA1234ZZZuijjk").groups()
('1234,)

Đã trả lời ngày 12 tháng 1 năm 2011 lúc 9:17Jan 12, 2011 at 9:19

Lennart Regebrolennart Regebroandreypopp

162K41 Huy hiệu vàng221 Huy hiệu bạc251 Huy hiệu Đồng5 gold badges26 silver badges26 bronze badges

0

biểu hiện thông thường

Trên đây sẽ không thành công với
>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
5 nếu không có "AAA" và "ZZZ" trong
>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
6

Phương thức chuỗiMar 14, 2018 at 9:11

Trên đây sẽ trả về một chuỗi trống nếu "AAA" hoặc "ZZZ" không tồn tại trong

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
6.rashok

Thử thách Python Python?13 gold badges85 silver badges97 bronze badges

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
1

Đã trả lời ngày 6 tháng 2 năm 2011 lúc 23:43

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
2

TzottzotMar 4, 2019 at 1:31

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

1

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
3

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

89.3K29 Huy hiệu vàng137 Huy hiệu bạc201 Huy hiệu đồngFeb 8, 2014 at 0:12

Ngạc nhiên vì không ai đề cập đến điều này, đó là phiên bản nhanh của tôi cho các tập lệnh một lần:

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
0

Đã trả lời ngày 9 tháng 2 năm 2019 lúc 16:57

Chú dài tóc tóc dài

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
4

2.5292 Huy hiệu vàng21 Huy hiệu bạc31 Huy hiệu Đồng

bạn có thể làm chỉ bằng một dòng mãJan 31, 2015 at 8:29

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

Kết quả sẽ nhận được danh sách ...Avinash Raj

Đã trả lời ngày 11 tháng 1 năm 2018 lúc 11:3925 gold badges214 silver badges262 bronze badges

Mahesh Guptamahesh Gupta

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
5

1.84611 huy hiệu bạc15 huy hiệu đồngJun 18, 2021 at 19:20

2

TIỀN THƯỞNG

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
6

3,4082 Huy hiệu vàng23 Huy hiệu bạc37 Huy hiệu đồngOct 14, 2017 at 9:22

Bạn có thể sử dụng mô -đun RE cho điều đó:

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
7

Đã trả lời ngày 12 tháng 1 năm 2011 lúc 9:19

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
5

AndreypoppandreypoppJan 8, 2020 at 23:03

6.7875 huy hiệu vàng26 Huy hiệu bạc26 Huy hiệu đồngRaphael

Trong Python, việc trích xuất chuỗi hình thức chuỗi con có thể được thực hiện bằng phương pháp

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
8 trong mô -đun biểu thức chính quy (
>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'
9).5 silver badges20 bronze badges

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
0

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
8

Đã trả lời ngày 14 tháng 3 năm 2018 lúc 9:11

Rashokrashok

12.1k13 Huy hiệu vàng85 Huy hiệu bạc97 Huy hiệu đồngJan 19, 2014 at 19:29

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

ChoDenis Kutlubaev

Đã trả lời ngày 4 tháng 3 năm 2019 lúc 1:316 gold badges80 silver badges68 bronze badges

Đã trả lời ngày 8 tháng 2 năm 2014 lúc 0:12

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234
9

Với SED, có thể làm một cái gì đó như thế này với một chuỗi:Feb 23, 2019 at 18:26

Và điều này sẽ cho tôi 1234 do đó.Foobar

Bạn có thể làm tương tự với chức năng

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
1 bằng cách sử dụng cùng một regex.14 gold badges67 silver badges138 bronze badges

Trong SED cơ bản, nhóm bắt giữ được đại diện bởi

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
2, nhưng trong Python, nó được đại diện bởi
import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
3.

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
0

Đã trả lời ngày 31 tháng 1 năm 2015 lúc 8:29Oct 12, 2019 at 0:30

Avinash Rajavinash RajJulio S.

169K25 Huy hiệu vàng214 Huy hiệu bạc262 Huy hiệu Đồng1 gold badge10 silver badges20 bronze badges

Một lớp lót với Python 3.8 nếu

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
4 được đảm bảo có chứa nền tảng:

Đã trả lời ngày 18 tháng 6 năm 2021 lúc 19:20

Bạn có thể tìm thấy phần đầu tiên với chức năng này trong mã của bạn (theo chỉ mục ký tự). Ngoài ra, bạn có thể tìm thấy những gì sau khi một nền tảng.

Đã trả lời ngày 14 tháng 10 năm 2017 lúc 9:22

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
1

Đã trả lời ngày 4 tháng 9 năm 2020 lúc 11:16Sep 4, 2020 at 11:16

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

Sergey Gurinsergey GurinSergey Gurin

1.38814 Huy hiệu bạc13 Huy hiệu đồng14 silver badges13 bronze badges

Ngoài ra, bạn có thể tìm thấy tất cả các kết hợp trong hàm dưới

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
2

result:

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
3

Đã trả lời ngày 5 tháng 10 năm 2021 lúc 19:02Oct 5, 2021 at 19:02

Yunusyunusyunus

Phim huy hiệu bạc 211 Huy hiệu đồng1 silver badge8 bronze badges

Trong trường hợp bạn muốn tìm kiếm nhiều lần xảy ra.

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
4

Hoặc nhanh hơn:

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
5

Đã trả lời ngày 2 tháng 8 lúc 13:28Aug 2 at 13:28

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

Một lớp lót trả về chuỗi khác nếu không có khớp.Chỉnh sửa: Phiên bản cải tiến sử dụng hàm

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
7, thay thế
import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)
8 bằng một cái gì đó khác nếu cần:

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
6

Phương pháp khác của tôi để làm điều này, ít tối ưu hơn, sử dụng Regex lần thứ 2, vẫn chưa tìm thấy một cách ngắn hơn:

import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234
7

Đã trả lời ngày 7 tháng 12 năm 2017 lúc 0:55Dec 7, 2017 at 0:55

Hướng dẫn extract a substring from a string in python - trích xuất một chuỗi con từ một chuỗi trong python

MAXLZMAXLZMaxLZ

791 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges