介紹
我正在嘗試使用結構如下的 RegEx 決議資訊:
1. Data
A. Data sub 1
B. Data sub 2
2. Data
A. Data sub 1
B. Data sub 2
C. Data sub 3
D. Data sub 4
3. Data
A. Data sub 1
每條資訊都是一個新行,我可以逐行進行,但我相信 RegEx 字串足以解決這個問題。
意圖
我想逐塊提取它,其中一個塊是:
1. Data
A. Data sub 1
B. Data sub 2
我的嘗試
我能夠觀察到該資料中有一個“模式”,盡管我可以嘗試使用下一個 RegEx 字串來提取它:
(?s)(?=1.)(.*?)(?=(2. ))
成功提取了一個塊,但如果該塊包含一個數字,使其包含在運算式中,則提取的塊不完整并損壞輸出檔案
我的期望
我想提取資料塊,而不會被定義的開始和結束之間的字串或字符打斷。
uj5u.com熱心網友回復:
我會re.split在這里使用,如果后面跟著換行符,則在換行符上拆分\d\.:
text = '''1. Data
A. Data sub 1
B. Data sub 2
2. Data
A. Data sub 1
B. Data sub 2
C. Data sub 3
D. Data sub 4
3. Data
A. Data sub 1'''
import re
blocks = re.split('\s*\n(?=\d \.)', text)
輸出:
['1. Data\n A. Data sub 1\n B. Data sub 2',
'2. Data\n A. Data sub 1\n B. Data sub 2\n C. Data sub 3\n D. Data sub 4',
'3. Data\n A. Data sub 1']
在一個回圈中:
for block in re.split('\s*\n(?=\d \.)', text):
print('--- NEW BLOCK ---')
print(block)
輸出:
--- NEW BLOCK ---
1. Data
A. Data sub 1
B. Data sub 2
--- NEW BLOCK ---
2. Data
A. Data sub 1
B. Data sub 2
C. Data sub 3
D. Data sub 4
--- NEW BLOCK ---
3. Data
A. Data sub 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496151.html
