2017-08-27 62 views
-2

我正在使用python 2.7。我正在運行一個使用python的linux命令,它打印出可用的wifi ssid。我需要比較我嘗試連接的ssid是否可用。我使用下面的命令打印SSID:如何比較python中的字符串

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編程新手。

由於

+1

你試過了嗎?如果ret [1] ==「SSID2」'? – khelwood

+0

@ khelwood不,我不認爲它會起作用,因爲ret [1]也有其他文字。 –

+0

看,如果有2個可能的情況。對或錯。如果是其他文本,則塊不會被執行 – Prajwal

回答

4

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]本)的序列。對於每行x,x.split('=')返回一個列表,其中第一個元素是等號左邊的字符串,第二個元素是右邊的那個字符串。所以x.split('=')[1]是右邊,x.split('=')[1][1:-1]刪除第一個和最後一個(引號)字符。

這被封裝在一個生成器表達式中,該生成器表達式爲內置的any函數生成一系列參數,一旦遇到一個計算結果爲true的參數,該函數就會返回True

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

這隻有在您正在查找的SSID恰好是列表中的第二個時纔會有效。 –