2015-03-02 45 views
0

我對Python有點新鮮。我正試圖找出如何在Python中進行分析? 我有一個任務:做一些未知的符號解析,並把它放到數據庫。我想我可以在SQLAlchemy的幫助下創建數據庫和表格,但我不知道如何解析以及下面所有這些符號是什麼意思?如何在python中解析?

http://joxi.ru/YmEVXg6Iq3Q426

http://joxi.ru/E2pvG3NFxYgKrY

$$HDRPUBID 112701130020011127162536 H11127011300UNIQUEPONUMBER120011127
D11127011300UNIQUEPONUMBER100001112345678900000001
D21127011300UNIQUEPONUMBER1000011123456789AR000000001
D11127011300UNIQUEPONUMBER200002123456987X000000001
D21127011300UNIQUEPONUMBER200002123456987XIR000000000This item is inactive. 9781605600000
$$EOFPUBID 1127011300200111271625360000005

在此先感謝那些誰可以給我一些建議什麼,從開始和解析是怎麼回事?

+0

看看正則表達式。 https://www.youtube.com/watch?v=DRR9fOXkfRE – EL3PHANTEN 2015-03-02 11:57:35

回答

0

最好的方法是首先找出每個令牌開始和結束的位置,然後編寫一個正則表達式來捕獲這些令牌。該網站RegexPal可能會幫助您設計正則表達式。

0

正如其他建議看看一些正則表達式教程,也re module help。 也許你正在尋找這樣的事情:

import re 
headerMapping = {'type': (1,5), 'pubid': (6,11), 'batchID': (12,21), 
       'batchDate': (22,29), 'batchTime': (30,35)} 
poaBatchHeaders = re.findall('\$\$HDR\d{30}', text) 
parsedBatchHeaders = [] 
batchHeaderDict = {} 
for poaHeader in poaBatchHeaders: 
    for key in headerMapping: 
     start = headerMapping[key][0]-1 
     end = headerMapping[key][1] 
     batchHeaderDict.update({key: poaHeader[start:end]}) 
    parsedBatchHeaders.append(batchHeaderDict) 

然後,你必須有類型的字典列表,每個字典包含數據的每個屬性。我假設你有你的數據文件在text這是字符串。每個字典都是針對一個找到的結構(例如POA Batch Header)。 如果你想進一步解析,你必須做一個函數來解析每個屬性中的每個日期。

def batchDate(batch): 
    return (batch[0:2]+'-'+batch[2:4]+'-20'+batch[4:]) 

for header in parsedBatchHeaders: 
    header.update({'batchDate': batchDate(header['batchDate'])}) 

請記住,這是一個例子,我不知道您的數據的文檔!我想它就是這樣的,但休息取決於你。

+0

謝謝你們 - 斯圖爾特和格里西克!!! – 2015-03-02 17:49:05