Python 从quickfix消息获取字段

Python 从quickfix消息获取字段,python,quickfix,fix-protocol,Python,Quickfix,Fix Protocol,我正在用python使用quickfix。查看文档页面告诉我们如何获取字段。假设一条message=fix。消息(以quickfix作为fix)来自交易对手。我可以通过调用 message.getHeader().getField(fix.MsgType()) 例如,它返回35=X 我的问题是:是否有任何方法只返回X?或者我必须对所有内容进行切片(比如35=X[3://code>,返回X),并因此知道所有字符串的长度 如果使用强类型方法,则为是,即: m.getHeader().getField

我正在用python使用quickfix。查看文档页面告诉我们如何获取字段。假设一条
message=fix。消息(以
quickfix作为fix
)来自交易对手。我可以通过调用

message.getHeader().getField(fix.MsgType())

例如,它返回
35=X


我的问题是:是否有任何方法只返回
X
?或者我必须对所有内容进行切片(比如
35=X[3://code>,返回
X
),并因此知道所有字符串的长度

如果使用强类型方法,则为是,即:

m.getHeader().getField(new MsgType());

答案是首先调用
message.getHeader().getField(fix.MsgType())

然后通过调用
fix.MsgType().getValue()
获取值

我使用了一个小util函数

def get_field_value(self, fobj, msg):
    if msg.isSetField(fobj.getField()):
        msg.getField(fobj)
        return fobj.getValue()
    else:
        return None
我这样称呼他

clordid = get_field_value(fix.ClOrdID(), message)
def get_header_field_value(self, fobj, msg):
    if msg.getHeader().isSetField(fobj.getField()):
        msg.getHeader().getField(fobj)
        return fobj.getValue()
    else:
        return None
对于标题字段,将如下所示

clordid = get_field_value(fix.ClOrdID(), message)
def get_header_field_value(self, fobj, msg):
    if msg.getHeader().isSetField(fobj.getField()):
        msg.getHeader().getField(fobj)
        return fobj.getValue()
    else:
        return None

请原谅我的无知,但是什么是新的MsgType()
?它是标记35的“字段名”。因此,如果您想要任何“字段名”(基本上是QF类型),请转到
newfieldname()
,QF应该为您进行排序。例如:
m.getHeader().getField(新的SenderCompID()).getValue()
m.get(新的结算日期())
m.getHeader().getField(new FieldName())
其中
FieldName
是要为其提供数据的字段名。。。您可以返回qf类型,这样您就可以转到
getValue()
来获取大多数qf类型的字符串值。我没有在PYTHON中尝试过这一点,但我知道这可能与QFJAh类似。这在Python中不起作用!如果Java中的
new FieldName()
启动了一个新类,这基本上就是Python中的
fix.FieldName()
所做的。这又回到了我最初的问题我没法让它工作。最后我做了一些类似的事情:
message.getHeader().getField(fix.MsgType().getField())