我有两个CSV文件,第一个是搜索项,另一个是某种数据库。我想在两个文件之间实现线性搜索。
我正在使用python 3.6
这是我的代码:
import csv
macs = []
brands = []
macxs = []
with open('example.csv') as csvfile:
readcsv = csv.reader(csvfile, delimiter=',')
for row in readcsv:
mac = row[0]
brand = row[1]
macs.append(mac)
brands.append(brand)
def macslice(slice):
return slice[:8]
with open('eggsample.csv') as csvfile2:
readcsv2 = csv.reader(csvfile2, delimiter=',')
for row in readcsv2:
macx = macslice(row[0])
macxs.append(macx)
def compare():
i=0
while i < len(macs):
if (macs[i] == macxs[i]):
print("FOUND", brands[i])
i += 1
else:
print("NOT FOUND")
i += 1
def compare2():
i=0
while i < len(macxs):
for x in macxs:
if (macs[i] == macxs[i]):
print("FOUND", brands[i]+" "+ macs[i])
i += 1
else:
print("BRAND not found for: ",macxs[i] )
i += 1
compare2()
我的代码没有进行线性搜索,只是将第一个CSV中的第一行与第二个CSV中的第一行进行比较,依此类推,直到两个CSV的结尾。
我期望某种线性搜索,逐行以及第一个CSV中的行返回条件。
希望我的描述可以帮助解决我的问题。
答案 0 :(得分:0)
问题在于您正在与索引i
进行比较时进行比较。
经验法则,您在compare2中在哪里使用x
?
切换到:
def compare2():
for y in macs:
for x in macxs:
if x==y:
print("FOUND", x+" "+ y)
else:
print("BRAND not found for: ",y )
compare2()
或类似的东西。