【发布时间】:2014-12-09 11:27:20
【问题描述】:
我正在尝试制作一个小型 Python 脚本来加快工作速度,并让一个小型脚本能够正常工作,但它并没有像我想要的那样工作。这是当前代码:
import re
import csv
#import pdb
#pdb.set_trace()
# Variables
newStock = "newStock.csv" #csv file with list of new stock
allActive = "allActive.csv" #csv file with list of all active
skusToCheck= []
totalNewProducts = 0
i = 0
# Program Start - Open first csv
a = open(newStock)
csv_f = csv.reader(a)
# Copy each row into array thingy
for row in csv_f:
skusToCheck.append(row[0])
# Get length of array
totalNewProducts = len(skusToCheck)
# Open second csv
b = open(allActive)
csv_f = csv.reader(b)
# Open blank csv file to write to
csvWriter = csv.writer(open('writeToMe.csv', 'w'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
# Check first value in first row,first file against each entry in 2nd row in second file
with open(allActive, 'rt') as b:
reader = csv.reader(b, delimiter=",")
for row in reader:
if skusToCheck[i] == row[1]:
print(skusToCheck[i]) # output to screen for debugging
print(row) # debugging
csvWriter.writerow(row) #write matching row to new file
i += 1 # increment where we are in the first file
伪代码是:
- 打开文件一并将第一列中的所有值存储在
skusToCheck中 - 根据文件 2 中第 2 列中的值检查该值
- 如果找到匹配项,(一旦我有这个工作,我希望它也寻找部分匹配项)将行复制到文件 3
- 如果不移动到
skusToCheck中的下一个值并重复
我似乎无法让第 33 - 40 行循环。它将检查第一个值并在第二个文件中找到匹配项,但不会从skusToCheck 移动到下一个值。
【问题讨论】:
-
您需要重置
i = 0在while循环内,或者最好使用for sku in skusToCheck:。 -
如果我在循环中重置它,它将如何跟踪它的位置?我使用 i 来跟踪程序在数组中的位置。
-
您能否澄清一下 - 您是要对照每一行检查每个 SKU,还是只检查那些与文件中出现顺序相同的 SKU? “跟踪它在哪里” 是什么意思? (对不起,那应该是
for循环。) -
我希望它查看来自 skusTocheck[i] 的第一个 sku(i 设置为 0,第一个条目),然后尝试将该 sku 与第二个文件中的任何匹配 sku 进行匹配。如果找到匹配项,则将该行复制到另一个文件,如果没有,则将 i 递增,以便查看 skusToCHeck 中的第二个条目。 i 变量跟踪数组中的哪个位置(变量?)以查找要搜索的值。
-
这没有回答问题 - 您是否要针对每一行检查每个 SKU? 如果是这样,您需要回到
skusToCheck的开头每个row in reader。