正如它在锡上所说,我正在编写一个 Python (2.7) 脚本,它查看两个电子表格(另存为 .csv),比较某些列以找到包含同一个人信息的行,并从每个电子表格中提取某些数据该人并将该数据放在另一个电子表格中。
我写的内容包括在下面。
我遇到的问题是,当我运行这个程序时,从 G__Notification 电子表格的表格中间找到并报告了第一个人和一个人。然而,其他人都不是,尽管我可以手动查看电子表格并自己比较列并找到此人。
并不是说他们只是没有被报告,因为我在找到匹配项的地方包含了一个打印功能,并且它只打印 2——为上述每个人打印一次。
我在这里做了什么奇怪的事情吗?任何帮助都会很棒。
# This script will take data from Matrix.csv and GO_Notification.csv, find the matching
# data sets, and report the data in an output folder.
import csv
# Will read data from Matrix_CSV, goFile_CSV
# Will write data to AutoGeneratorOutput.csv
f = open('AutoGeneratorOutput.csv', 'wb')
g = open('GO_Notification.csv', 'rb')
h = open('Matrix.csv', 'rb')
matrixFile_reader = csv.reader(h)
goFile_reader = csv.reader(g)
outputFile_writer = csv.writer(f)
# Create the headings in the output file
headings = ['Employee #', 'Name', 'Last 4 of SS', 'Hired', 'GO Date',\
'PL Description', 'Department Name', 'Title', 'Supervisor'\
'Accudose', 'Intellishelf', 'Vocera']
outputFile_writer.writerow(headings)
matrixFile_reader.next()
goFile_reader.next()
while 1:
for goRow in goFile_reader:
goLine = goRow
h.seek(0) # Return to the top of the matrixFile for the next iteration
for matrixRow in matrixFile_reader:
try:
matrixLine = matrixRow
# Compare the departments, job numbers, and PLs to find a match
if goLine[9].strip() == matrixLine[1].strip() and goLine[11].strip() == matrixLine[5].strip() \
and goLine[12].strip() == matrixLine[3].strip():
# Here's a match
output = [goLine[0], goLine[1], '', goLine[2], goLine[3], goLine[9],\
goLine[11], goLine[13], goLine[15], matrixLine[20], matrixLine[21],\
matrixLine[22], matrixLine[23]]
outputFile_writer.writerow(output)
print(goLine[1])
except StopIteration:
pass
break
# Close the files when finished
f.close()
g.close()
h.close()
print('Finished')