Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中进行解析?_Python_Database_Parsing - Fatal编程技术网

如何在python中进行解析?

如何在python中进行解析?,python,database,parsing,Python,Database,Parsing,我对Python有点陌生。我想知道如何用Python进行解析? 我有一个任务:用一些未知的符号进行解析,然后把它放到数据库中。我想我可以在SQLAlchemy的帮助下创建DB和表,但我不知道如何进行解析,也不知道下面这些符号的含义是什么 $$HDRPUBID 11270113000201127162536 H11127011300唯一电话号码120011127 D1112701130uniqueponumber10000112345678900000001 D2112701130unique

我对Python有点陌生。我想知道如何用Python进行解析? 我有一个任务:用一些未知的符号进行解析,然后把它放到数据库中。我想我可以在SQLAlchemy的帮助下创建DB和表,但我不知道如何进行解析,也不知道下面这些符号的含义是什么

$$HDRPUBID 11270113000201127162536
H11127011300唯一电话号码120011127
D1112701130uniqueponumber10000112345678900000001
D2112701130uniqueponumber1000011123456789AR000000001
D1112701130uniqueponumber200002123456987x000000001
D2112701130UniquePonNumber 200002123456987XIR000000000此项目处于非活动状态。97816056000
$$EOFPUBID 112701130002011271625360005


提前感谢那些能给我一些建议的人,从什么开始以及解析是如何进行的

最好的方法是首先找出每个标记的开始和结束位置,然后编写正则表达式来捕获这些标记。该网站可能会帮助您设计正则表达式。

如其他人所建议的,请查看一些正则表达式教程,以及。 也许你正在寻找这样的东西:

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)
然后你有一个dict列表,每个dict包含每个属性的数据。我假设您的数据文件位于
text
中,它是字符串。每个dict针对一个找到的结构(示例中为POA批处理头)。 如果您想进一步解析它,您必须创建一个函数来解析每个属性中的每个日期

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

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

请记住,这只是一个例子,我不知道您的数据文档!我猜它是这样工作的,但其余的取决于您。

看看正则表达式。