【发布时间】:2016-04-12 17:04:46
【问题描述】:
我正在尝试找到一种更有效的方法来过滤 .csv 文件中的 SSID 列表,然后将过滤后的结果写入另一个文件。
目前,我的代码如下所示(并且按预期工作):
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 的解决方案。我想使用一个列表并遍历它。今天早上我问了一个关于 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()
此输出在 'if SSID in line:' 处产生错误,因为“TypeError: 'in ' 需要字符串作为左操作数,而不是列表。”
当用“if str(SSID)”替换“if SSID”时,我没有收到任何错误,但也没有任何返回,我猜这是因为它搜索的是整个字符串而不是单个元素。
我有同样的 TypeError,除了它把它当作一个元组而不是一个列表,当我尝试使用 zip 时,如果我使用正确的话..
File = open('/home/pi/unFilter.csv', 'r')
for line in File:
for new in zip(SSID):
if new in line:
print line
我应该如何处理这个问题?
【问题讨论】:
标签: python python-2.7 for-loop