我有以下輸入。我想解析它爲CSV分隔字符串。我可以通過正則表達式模式獲得SKU,但由於我對正則表達式解析不熟悉,因此我不瞭解複雜模式。如果有人能幫助我,這將是很好的。如何使用Python中的正則表達式從文本中提取信息?
謝謝!
charset="iso-8859-1"
BODY {
}
TD {
}
TH {
}
H1 {
}
TABLE,IMG,A {
}
**PO Number:** 35102
**Ship To:**
Georgie Clements
6902 Stonegate Drive
Odessa, TX 79765
432-363-8459
SKU
Product
Qty
JJ-Rug-Zebra-PK
Zebra Pink Rug
1
JJ-Zebra-PK-Twin-4
Zebra Pink 4 Piece Twin Comforter Set
1
JJ-TwinSheets-Zebra-PK
Zebra Pink 3 Piece Twin Sheet Set
1
JJ-Memo-Zebra-PK
Zebra Pink Memory Board
1
我希望它這樣的格式:
PONumber, Shipping info, SKU, Product, Qty
'35102', '[ShipToAddress]', 'JJ-Rug-Zebra-PK', 'Zebra Pink Rug', '1'
'35102', '[ShipToAddress]', 'JJ-Zebra-PK-Twin-4', 'Zebra Pink 4 Piece Twin Comforter Set', '1'
'35102', '[ShipToAddress]', 'JJ-TwinSheets-Zebra-PK', 'Zebra Pink 3 Piece Twin Sheet Set', '1'
'35102', '[ShipToAddress]', 'JJ-Memo-Zebra-PK', 'Zebra Pink Memory Board', '1'
當前的代碼如下:
pattern = re.compile(r'(\b\w*JJ-\S*)')
pos = 0
while True:
match = pattern.search(msgStr, pos)
if not match:
break
a = match.start()
e = match.end()
print ' %2d : %2d = %s' % (a, e-1, msgStr[a:e])
pos = e
您的正則表達式到目前爲止看起來如何? – jdi 2012-07-15 14:54:38
另外,一個正則表達式不適合這個問題。它需要具有狀態的解析方法。每行都必須進行評估,以確定您是否正在捕獲不同的數據集。 – jdi 2012-07-15 14:57:04
圖案= re.compile(R '(\ B \ W * JJ- \ S *)') POS = 0 而真: 匹配= pattern.search(msgStr,POS) 如果不匹配: 破 一個= match.start() E = match.end() 打印 '%2d中:%2d中=%s' 的%\ (A,E-1,msgStr [A:E]) POS = E – 2012-07-15 15:01:24