2017-08-27 3 views
-2

私はpython 2.7を使用しています。私は利用可能なwifi ssidを印刷するpythonを使用してlinuxコマンドを実行しています。私は、接続しようとしているssidが利用可能かどうかを比較する必要があります。私はこれを置くことができるか、Pythonの文字列を比較する方法

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

私はSSID2に接続しようとしているとしましょう:私はprint(ret[1])を印刷する場合、それは、出力の下に与え

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

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

:私は、SSIDを印刷するには、以下のコマンドを使用しています現在のところ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()(あなたはこのためret[1]を使用することができます)dataにラインのシーケンスを返します。各行について、xx.split('=')は、最初の要素が等号の左側の文字列であり、2番目が等号の左側の文字列であるリストを返します。したがって、x.split('=')[1]が右側になり、x.split('=')[1][1:-1]が最初と最後の(引用符)文字を削除します。

これは、組み込みのany関数への一連の引数を生成するジェネレータ式にラップされます。この関数は、trueを評価する引数を検出するとすぐにTrueを返します。

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

これは、探しているSSIDがリスト内の2番目のSSIDである場合にのみ機能します... –