【问题标题】:Merging a string splitted by space in Python在Python中合并由空格分隔的字符串
【发布时间】:2013-03-11 14:28:22
【问题描述】:

我有一段这样的代码:

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

我什么都没得到。

出了点问题……

【问题讨论】:

  • 我不知道为什么你什么都没有,但是加入字符串是这样的:"".join(line.split(" ")[6:14])
  • 你永远不会得到任何输出的原因是if status=="0": 永远不会是真的,因为你将它转换为int。看我的回答

标签: python string merge split


【解决方案1】:

你想使用join:

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

但是,更大的问题是您的 status=="0" 行永远不会为真(因为 status 是一个 int),请将其更改为

if status == 0:

【讨论】:

  • 鉴于If I write print IEEEAddrRemoteDev I don't obtain anything,我怀疑这是否能解决问题。我认为 OP 在输入的某处有一个空的line,这会导致算法失效
  • @inspectorG4dget 这有点奇怪,但在这种情况下,只有空行应该有空输出。
  • @inspectorG4dget: 整理出来-问题是他的if status == "0" 行,这意味着他根本没有从打印语句中得到任何输出,因为条件从未满足(状态是int )。
  • 好电话(+1)!我刚看到你的编辑。另外,我注意到 OP 存在语法错误,但这更有可能是复制粘贴错误,因为否则代码将无法运行
  • 是的,错误是 status=="0"。 status 不是字符串是 int。加入方法是对的!非常感谢!
【解决方案2】:

我没有完全理解您想要的输出。但是当你写这行时:

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

你正在做的是用空格分割字符串,所以当前的输出是:

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

我假设您想要以下输出?

'20961000000' ?

如果是这样,只需在您的打印语句之前添加以下行:

"".join(IEEEAddrRemoveDev)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多