.csvファイルでSSIDのリストをフィルタリングし、フィルタ処理した結果を別のファイルに書き込むより効率的な方法を見つけようとしています。forループをPythonの文字列のセットを使ってフィルタを作成する
現在、私が持っているコードは次のようになります(そして、それが期待通りに動作します):
def ssidFilter():
File = open("/home/pi/unFilter.csv", "r")
for line in File:
if 'Test SSID' in line:
with open("/home/pi/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
if 'Public' in line:
with open("/home/pi/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
if 'HomeNet' in line:
with open("/home/pi/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
if 'Network 1' in line:
with open("/home/pi/gpsMaster/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
if 'LimeOak' in line:
with open("/home/pi/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
if 'BlackCrow' in line:
with open("/home/pi/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
if 'GuestWiFi' in line:
with open("/home/pi/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
File.close()
しかし、私は個別のSSIDのそれぞれによって実行されていないソリューションを使用したいと思います。 Idはリストを使用してそれを反復するのが好きです。私は今朝のzip関数に関する質問をしましたが、コードのこの部分では機能しませんでした。私は(働いていない)に取り組んできました
:
SSID = ['Test SSID' , 'Public' , '....etc...']
File = open("/home/pi/unFilter/csv" , "r")
for line in File:
if SSID in line:
with open("/home/pi/dataLog.csv", "a") as finalFile:
finalFile.write(str(line))
File.close()
は、このの出力は時にエラーを生成は、「SSID場合行に:」TypeError例外「として:左のように 『中』の文字列が必要ですオペランド、リストではありません。
「SSIDの場合」を「if str(SSID)」に置き換えるとエラーは発生しませんが、何も返されず、個々の要素ではなく文字列全体を検索しているためです。
私はそれを正しく使用している場合は、zipファイルを使用しようとすると、そのは、リストをタプルとしてそれを治療していない以外、同じ例外TypeErrorを持っていた...
File = open('/home/pi/unFilter.csv', 'r')
for line in File:
for new in zip(SSID):
if new in line:
print line
は、どのように私はアプローチすべきですこの問題?