簡體   English   中英

Python 正則表達式分組幫助請

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM