3

私はこのようなコードの一部を持っています:

for line in response.body.split("\n"):
    if line != "": 
        opg = int(line.split(" ")[2])
        opc = int(line.split(" ")[3])
        status = int(line.split(" ")[5])
        if command == 'IDENTIFY':
            if opg==opcodegroupr and opc==opcoder:
                if status=="0":
            IEEEAddrRemoteDev = line.split(" ")[6:14]
        ret['success'] = "IDENTIFY: The value is %s " % (IEEEAddrRemoteDev)
        self.write(tornado.escape.json_encode(ret))
        self.finish()

たとえば、変数「line」は次のようになります。

1363011361 2459546910990453036 157 0 17 0 209 61 0 0 0 0 0 0 0 0 0 0 0 0 0 201

たとえば、6 から 14 までのフィールドを取得し、互いに「マージ」して、IEEEAddrRemoteDev を文字列全体のように出力します。

これは

IEEEAddrRemoteDev = line.split(" ")[6:14] 

正しい方法は?私が書いたら

print IEEEAddrRemoteDev

私は何も得ません。

何か間違っている...

4

2 に答える 2

6

使用したいjoin

ret['success'] = "IDENTIFY: The value is %s " % (" ".join(IEEEAddrRemoteDev))

ただし、より大きな問題は、status=="0"行が決して真ではないことです(statusintであるため)、次のように変更します

if status == 0:
于 2013-03-11T14:30:44.440 に答える
0

ご希望の出力を完全には理解していませんでした。しかし、次の行を書くと:

IEEEAddrRemoteDev = line.split(" ")[6:14]

あなたがしているのは、文字列を空白で分割しているため、現在の出力は次のとおりです。

['209', '61', '0', '0', '0', '0', '0']

次の出力が必要だと思いますか?

'20961000000' ?

その場合は、print ステートメントの前に次の行を追加します。

"".join(IEEEAddrRemoveDev)
于 2013-03-11T14:35:26.080 に答える