在Python中打印字符串的一部分

时间:2014-02-05 00:20:10

标签: python-2.7 substring

尝试获取并打印并进一步使用pi上的本地IP地址:

import os
getipaddr = "ip addr show eth0 | grep inet"
ip = "%s" % (os.system(getipaddr))
print ip 

返回:

  

inet 192.168.1.200/24 brd 192.168.1.255范围全球eth0
  0

正确包含本地地址,但是:

import os
getipaddr = "ip addr show eth0 | grep inet"
ip = "%s" % (os.system(getipaddr))
print ip[9:22]

返回:

  

inet 192.168.1.200/24 brd 192.168.1.255 scope global eth0

不是我预期的从字符10到21的字符子集。也许ip不是真正的字符串变量。任何有关如何修复的帮助非常感谢。谢谢! [注意:打印返回中inet前面实际上有4个空格,只是不知道如何在这个论坛中显示它]

1 个答案:

答案 0 :(得分:2)

如果查看this question,您会看到os.system的返回值是调用的返回值,而不是它的输出。您在屏幕上看到的输出不是来自python,而是来自ip调用。如果要捕获输出,请使用subprocess模块:

from subprocess import check_output
getipaddr = "ip addr show eth0 | grep inet"
ip = check_output(getipaddr, shell=True)

现在,输出将在ip,您应该得到所需的结果。


作为旁注,'%s' % something是一种反模式。转换字符串的更清晰的方法是str(something)