Python-使用不同.csv文件中的行搜索.csv文件

Python-使用不同.csv文件中的行搜索.csv文件,python,csv,Python,Csv,全部- 我试图从csv文件中读取一行,然后让它搜索另一个csv文件 我有一个masterlist.csv,它有一个名为empID的列。它包含数千行9位数字。我还有ids.csv,它还包含一个名为number的列。它包含数百行。我试图从ids.csv中提取一行,在masterlist.csv上进行搜索,并打印出是否已找到该行。然后它需要移动到ids.csv中的下一行,直到ids.csv中的每一行都在masterlist.csv中搜索完毕。 我认为它会像这样简单,但是它不会抛出任何错误,也不会返回任

全部-

我试图从csv文件中读取一行,然后让它搜索另一个csv文件

我有一个masterlist.csv,它有一个名为empID的列。它包含数千行9位数字。我还有ids.csv,它还包含一个名为number的列。它包含数百行。我试图从ids.csv中提取一行,在masterlist.csv上进行搜索,并打印出是否已找到该行。然后它需要移动到ids.csv中的下一行,直到ids.csv中的每一行都在masterlist.csv中搜索完毕。 我认为它会像这样简单,但是它不会抛出任何错误,也不会返回任何结果

使用Python 2.7.12 导入csv

masterReader = csv.reader(open("masterlist.csv", "rt"), delimiter=",")
idsReader = csv.reader(open("ids.csv", "rt"), delimiter=",")


for number in idsReader:
    for empID in masterReader:
        if number == empID:
            print (" Found in MasterFile")
        else:
            print ("Is Not Found in MasterFile")
编辑:添加用于测试的数据片段


通过使用集合的交集和
csv.DictReader
作为您的reader对象,您可以很容易地找到这两个对象共有的数字(不确定文件是否实际包含一列):


或者使用列表成员资格检查来查找
idsReader
中包含在
masterReader
中的行:

masterReader = [row['empID'] for row in masterReader]

for row in idsReader:
    if row['number'] in masterReader:
        print (" Found in MasterFile")
    else:
        print ("Is Not Found in MasterFile")

另外,考虑到您问题的更新,您甚至可能不需要csv模块来完成此操作

EmpId
111111111
222222222
333333333
444444444
ids.csv的内容:

Number
111111111
999999999
444444444
555555555
222222222
import csv

f1 = file('master.csv', 'r')
f2 = file('ids.csv', 'r')

c1 = csv.reader(f1)
c2 = csv.reader(f2)

idlist = list(c2)
masterlist = list(c1)

for id in idlist[1:]:
    found = False
    #Need to ignore heading thats why masterlist[1:]
    for master in masterlist[1:]:
        if id == master:
            found = True
    if found:
        print "Found in master file"
    else:
        print "Not found in master file"

f1.close()
f2.close()
C:\Users\dinesh_pundkar\Desktop>python c.py
Found in master file
Not found in master file
Found in master file
Not found in master file
Found in master file

C:\Users\dinesh_pundkar\Desktop>
代码:

Number
111111111
999999999
444444444
555555555
222222222
import csv

f1 = file('master.csv', 'r')
f2 = file('ids.csv', 'r')

c1 = csv.reader(f1)
c2 = csv.reader(f2)

idlist = list(c2)
masterlist = list(c1)

for id in idlist[1:]:
    found = False
    #Need to ignore heading thats why masterlist[1:]
    for master in masterlist[1:]:
        if id == master:
            found = True
    if found:
        print "Found in master file"
    else:
        print "Not found in master file"

f1.close()
f2.close()
C:\Users\dinesh_pundkar\Desktop>python c.py
Found in master file
Not found in master file
Found in master file
Not found in master file
Found in master file

C:\Users\dinesh_pundkar\Desktop>
输出:

Number
111111111
999999999
444444444
555555555
222222222
import csv

f1 = file('master.csv', 'r')
f2 = file('ids.csv', 'r')

c1 = csv.reader(f1)
c2 = csv.reader(f2)

idlist = list(c2)
masterlist = list(c1)

for id in idlist[1:]:
    found = False
    #Need to ignore heading thats why masterlist[1:]
    for master in masterlist[1:]:
        if id == master:
            found = True
    if found:
        print "Found in master file"
    else:
        print "Not found in master file"

f1.close()
f2.close()
C:\Users\dinesh_pundkar\Desktop>python c.py
Found in master file
Not found in master file
Found in master file
Not found in master file
Found in master file

C:\Users\dinesh_pundkar\Desktop>
没有CSV模块的代码更简短版本


查看文档以重新读取csv文件,您的语法似乎有误:“将open('ids.csv','rb')作为csvfile:“例如……至少我过去在不以这种方式打开它们时遇到过问题……您能提供一个输入剪报吗?”?我怀疑
.strip()
可以解决这个问题。此外,您还可以让它打印
number
empID
,以确保您得到的是您认为得到的。在我看来,这不像是逗号分隔的(除非np++为您弄乱了它)