re.split没有工作^ A

swi*_*wiz -2 python regex split

我正在尝试解析看起来像的输入行

8=FIX.4.2^A9=0126^A35=0^A34=000742599^A49=L3Q206N^A50=2J6L^A52=20130620-11:16:27.344^A369=000733325^A56=CME^A57=G^A142=US,IL^A1603=OMS2^A1604=0.1^A
Run Code Online (Sandbox Code Playgroud)

您有不同的数据字段,由^ A分隔.我试图得到各个数据字段(如8 = FIX.4.2,9 = 0126,35 = 0等).问题是python有时将^ A解释为单个字符(在vim中这是ctrl-v,ctrl-a),有时将字符'^ A'解释为有两个字符.所以我试过了

entries = re.split('^A|^A', str(line))
Run Code Online (Sandbox Code Playgroud)

但后来当我这样做

for entry in entries:
    print entries
Run Code Online (Sandbox Code Playgroud)

我最后得到了原始字符串,没有任何分裂.这是re.split的问题吗?

sca*_*boy 5

取决于该行包含的内容.

如果要拆分2个字符的字符串'^A',请转义特殊到正则表达式字符^,在这种情况下可能有意义'\^A'.

更可能的是,这是使用字节值0x01打印单个字符的插入符号方式,在这种情况下,您可能希望拆分'\x01'.

(你不妨使用字符串自己的split()函数,我猜它比使用正则表达式更简单的事情更快)