2013-03-11 31 views
3

分裂我有这样的码的一部分的字符串:合并通过空间在Python

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() 

变量“线”是这样的,例如:

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 

我没有得到任何东西。

有问题的话...

+0

我不知道为什么你没有得到任何东西,但加盟的字符串是这样的:'“”。 join(line.split(“”)[6:14])' – hughdbrown 2013-03-11 14:31:33

+2

你永远不会得到任何输出的原因是,如果status ==“0”:'永远不是真的,因为你将它转换为int。看到我的回答 – 2013-03-11 14:40:23

回答

6

你想用join

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

然而,更大的问题是,你的status=="0"线是不正确的(因为status是一个int),将其更改到

if status == 0: 
+0

我怀疑这会解决问题,因为'如果我写打印IEEEAddrRemoteDev我没有获得任何东西'。我认为OP在输入的某个地方有一个空的“行”,这就是抛弃算法 – inspectorG4dget 2013-03-11 14:32:51

+1

@ inspectorG4dget,这有点奇怪,但是在这种情况下,只有空行应该有一个空输出。 – 2013-03-11 14:34:24

+0

@ inspectorG4dget:排序 - 问题是他的'if status =='0''行,这意味着他从来没有从print语句中得到任何输出,因为条件从未满足(status是一个'int') 。 – 2013-03-11 14:41:11

0

我没有完全理解你的期望输出。但是,当你写的一行:

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

你在做什么是由分裂的空白串,所以输出是目前:

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

我想,你希望下面的输出?

'20961000000' ? 

如果是这样,只是你的打印语句前加上下面一行:

"".join(IEEEAddrRemoveDev)