从CSV一次搜索字符串

时间:2019-04-15 07:02:28

标签: python-3.x csv

我有两个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中的行返回条件。

希望我的描述可以帮助解决我的问题。

1 个答案:

答案 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()

或类似的东西。