2015-03-02 44 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