[英]Python Regular Expression Grouping Assistance Please
我正在嘗試將兩個字段合並到一個 findall 中並打印所有結果。
a = ['Name: Donut,
PUL: 21392132,
Quantity: 7,
Name: Red Donut,
PUL: 25,
Quantity :25'
]
d = .join(re.findall(r'\bquantity.(.*)+\bname.(.*)', a)
print(d)
e = re.findall(r'\bname.(.*)', a)
期望的結果應該類似於下面
25 x 紅甜甜圈 7 x 甜甜圈
我可以使用以下命令分別獲取名稱或數量
e = re.findall(r'\bname.(.*)', a)
但是,當我嘗試將它們連接在一起時,我不斷收到空結果或錯誤消息。
任何幫助將不勝感激。
首先將數據重組為多行字符串,然后為數量和名稱創建模式(同時設置 re.I,即 re.IGNORECASE 標志),反轉結果,最后將它們連接成一個結果字符串:
import re
a = """
Name: Donut,
PUL: 21392132,
Quantity: 7,
Name: Red Donut,
PUL: 25,
Quantity: 25
"""
quantities_pattern = re.compile(r"\bquantity:\s(\d+)", re.I)
quantities_reverse = re.findall(quantities_pattern, a)[::-1]
print(quantities_reverse)
names_pattern = re.compile(r"\bname:\s(\w+\s?\w*),", re.I)
names_reverse = re.findall(names_pattern, a)[::-1]
print(names_reverse)
lines = []
for qty, name in zip(quantities_reverse, names_reverse):
lines.append(qty + ' x ' + name + ' ')
print(''.join(lines))
結果:
['25', '7']
['Red Donut', 'Donut']
25 x Red Donut 7 x Donut
或者,如果您想要逐行顯示結果:
for line in lines:
print(line)
返回:
25 x Red Donut
7 x Donut
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.