【问题标题】:How to take a part of an output, without knowing the result [closed]如何在不知道结果的情况下获取输出的一部分 [关闭]
【发布时间】:2019-01-11 07:21:27
【问题描述】:

我有一个命令可以扫描网络上的设备,然后提供很多关于它们的信息,包括它的 ip 地址,如何隔离 ip 并将其转换为字符串? 知道它会扫描特定设备,像 nmap 这样的东西不适用于我的情况,另外,会有多个 IP,如何将它们隔离在不同的字符串中?

输出:

[{'ip': u'xxx.xxx.xx.xx', 
  'port': xxxxx, 
  'capabilities': {
      u'hue': u'0', 
      u'color_mode': u'2', 
      u'name': u'xxxxxx', 
      u'power': u'on', 
      u'support': u'get_prop set_default set_power toggle set_bright start_cf stop_cf set_scene cron_add cron_get cron_del set_ct_abx set_rgb set_hsv set_adjust set_music set_name', 
      u'rgb': u'16712469', 
      u'fw_ver': u'44', 
      u'bright': u'100', 
      u'model': u'stripe', 
      u'ct': u'2000', 
      u'id': u'0x0000000005e1c8db', 
      u'sat': u'100'
      }
  }]

【问题讨论】:

  • 这是您想要的输出,还是您的扫描命令的输出?
  • @GreenCloakGuy 命令来自yeelight.readthedocs.io/en/stable/yeelight.html# 我正在制作一个 GUI 来命令灯泡
  • @PM2Ring 是命令的输出
  • @PM2Ring 甚至没有 - OP 说“命令”,但这实际上是一个返回字典列表的 python 函数 (yeelight.discover_bulbs)。 op 复制/粘贴函数返回值的打印输出。
  • @Mazeo 你应该阅读一些基本的 Python 数据结构教程。最佳起点:docs.python.org/3/tutorial/datastructures.html

标签: python networking ip


【解决方案1】:

如果您收到可解析的输出,可以简单地做:

ips= []

for data in output:
    ips.append(data["ip"])

或者按照评论建议:

ips = [data["ip"] for data in output]

【讨论】:

  • 或者更简单:ips = [item["ip"] for item in output]
  • 为什么要“解码”?您不解码 unicode 字符串(您最终希望对它们进行编码,但最好将所有 unicode 保留在代码中)。
  • @brunodesthuilliers opsies。正在回答另一个问题 :) 输入混乱
  • 名字怎么办?我设法让“端口”工作但不是“名字”
  • names = [data["capabilities"]["name"] for data in output]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2019-02-24
相关资源
最近更新 更多