如何在python中比较字符串

2024-05-15 16:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python2.7。我正在运行一个使用python的linux命令,它打印出可用的wifi ssid。我需要比较我尝试连接的ssid是否可用。我正在使用以下命令打印ssid:

import commands
ret = commands.getstatusoutput("sudo iwlist wlan0 scan | grep ESSID")
print(ret)

#output:    
(0, ESSID="SSID1"\n
    ESSID="SSID2"\n
    ESSID="SSID3")

如果我打印print(ret[1]),它会给出以下输出:

    ESSID="SSID1"
    ESSID="SSID2"
    ESSID="SSID3"

假设我正在尝试连接到SSID2,如何将其置于检查SSID2此时是否可用的条件中。类似于if ret[1] == "SSID2"。我是python编程新手。你知道吗

谢谢


Tags: import命令linuxsudocommandswifiprintret
2条回答

ret[1]是以换行符分隔的字符串。每行都有一个等号。当"SSID2"出现在任何等号的右侧时,需要一个计算结果为True的表达式。你知道吗

data = '''\
ESSID="SSID1"
ESSID="SSID2"
ESSID="SSID3"'''
if any(x.split('=')[1][1:-1]=="SSID2" for x in data.splitlines()):
    print("yes")

data.splitlines()返回data中的一系列行(可以使用ret[1])。对于每一行xx.split('=')返回一个列表,其中第一个元素是等号左边的字符串,第二个是等号右边的字符串。所以x.split('=')[1]是右边,而x.split('=')[1][1:-1]删除第一个和最后一个(引号)字符。你知道吗

这被包装在一个生成器表达式中,该表达式为内置的any函数生成一系列参数,该函数在遇到计算结果为true的参数时立即返回True。你知道吗

if "SSID2" in "ret[1].split("\n")[1]":
    print "yes"

相关问题 更多 >