Python 分析数据块中的多个背靠背消息

Python 分析数据块中的多个背靠背消息,python,regex,fix-protocol,Python,Regex,Fix Protocol,我有一个数据块,基本上由管道分隔的固定消息(背靠背)组成 我正在使用python,而且我能想到的唯一方法是找到8=FIX.4.2标记的索引(表示消息的开头),返回到上一条消息的结尾,并以这种方式确定消息 我想知道这是否可以通过其他方式实现(例如regex)。我不知道如何在这里应用regex中的分组构造 作为我正在查看的数据示例: 8=FIX.4.2|9=122|35=D|49=hello|56=def|34=2|52=19700116-14:18:06.790|11=000007|55=DUMM

我有一个数据块,基本上由管道分隔的固定消息(背靠背)组成

我正在使用python,而且我能想到的唯一方法是找到
8=FIX.4.2
标记的索引(表示消息的开头),返回到上一条消息的结尾,并以这种方式确定消息

我想知道这是否可以通过其他方式实现(例如regex)。我不知道如何在这里应用regex中的分组构造

作为我正在查看的数据示例:

8=FIX.4.2|9=122|35=D|49=hello|56=def|34=2|52=19700116-14:18:06.790|11=000007|55=DUMMY|54=#|38=1000|40=1|44=77|60=19700116-14:18:06.790|59=0|10=148|8=FIX.4.2|9=122|35=D|49=hello|56=def|34=2|52=19700116-14:18:06.790|11=000007|55=DUMMY54=#|38=1000|40=1|44=77|60=19700116-14:18:06.790|59=0|10=148|

您只需使用
8=FIX.4.2
作为
split()

的参数,split的问题在于它会从结果表达式中删除分隔符。 这是我所拥有的数据的剥离结果

“代码”><,“,,“9=122 | 9=122 | 35=35=D 124,,,,,,,,,,,,,,,,,[9=122=122 | 35=122 | 35=D | 35=D | 49=D | 49=D 124;56=12=12=12=12 124;56=12=12=10-14 124;52=10-14;52=10-14;52=10-14;52=10-14;52=19=10-14:14;52=19=19.70010-10-14:14;52=10-14;52=10-14;52=10-10-14:17=10-10-14:10-14:10-14;14:18:18:18:6.790=10.790 0 0 0 0 0 0 0 0 0 0 0 0 0 | 11=000007 | 55=IYH | 54 | 38=1000 | 40=1 | 44=77 | 60=19700116-14:18:06.790 | 59=0 | 10=148 |]

我认为我正在寻找的方法包括使用分组以及re.finditer


完成后,我将发布表达式(因为我以前从未使用过它)。

expr=r'8=FIX\.4\.2.*10=\d+\\'
msglist=re.findall(expr,data)


这似乎按我希望的方式起作用。

比我快。如果您知道始终有完整的消息,并且分隔符始终相同,只需将其拆分,然后在管道上再次拆分,即可开始工作。
messages = your_input.split('8=FIX.4.2|')
messages = [ m.split('|') for m in messages ]