当前位置: 首页 > 知识库问答 >
问题:

re.split在^A上不工作[重复]

蔺翰音
2023-03-14

我试图解析的输入行看起来像

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

其中不同的数据字段由^A分隔。我试图获得各个数据字段(如8=fix.4.2、9=0126、35=0等)。问题是python有时将^a解释为单个字符(在vim中是ctrl-v、ctrl-a),有时将^a解释为带有两个字符的字符串'^a'。所以我试着做

entries = re.split('^A|^A', str(line))

但后来当我做的时候

for entry in entries:
    print entries

我只是得到了原来的字符串,没有分裂。这是re.split的问题吗?

共有1个答案

计向晨
2023-03-14

取决于那一行包含什么。

如果要对2个字符串'^a'进行拆分,请转义特殊到正则表达式的字符^,在本例中可能意味着'\^a'

更有可能的是,这是打印字节值为0x01的单个字符的插入符号表示法,在这种情况下,您可能希望在'\x01'上拆分。

(您还可以使用String自己的split()函数,我猜它比使用regexp来处理这么简单的事情要快)

 类似资料:
  • 有人能帮我解决这个问题吗?

  • 这是我的密码: 我已经安装了Python3(MacOSX),并将其与virtualenv一起使用。这段代码在2.7中运行良好,但在python3中不起作用。5.它总是给出

  • 我遵循官方的例子来编写这个程序

  • 我需要通过耳机播放一些音频。我使用AudioTrack在设备上播放一些声音。并且音频模式被设置为流_语音_呼叫。此外,在我的活动中,免提电话是通过以下方式关闭的: 这似乎在2.3设备上运行得很完美。但在2.1上,声音仍然从扬声器播放。 为了解决这个问题,我尝试将setMode()用作: 有了这个,2.1和2.3的声音就可以通过耳机播放了,但2.3的大多数时候根本不会播放。此外,我在一些地方读到se

  • 问题内容: 最近,我遇到了这段Java代码: 为“ a”打印的值为0。但是在C的情况下,“ a”的值为100。 我不明白为什么在Java情况下该值为0。 问题答案: a = a++; 从递增开始,然后返回到旧值,返回未递增的值。 简而言之,它在Java中什么也不做。如果要增加,请仅使用postfix运算符,如下所示:

  • 我刚刚在我的Android应用程序中安装了Firebase,以启用推送通知。我通过从Firebase控制台向所有运行该应用程序的设备发送推送通知来确认它正在工作。现在,我正在尝试获取FCM令牌(应用程序实例的唯一标识符),以便可以向特定设备发送消息。然而,当我在扩展FirebaseMessagingService的类中重写onNewToken()函数时,该方法不会被重写。根据文件,它应该可以工作。