必须是我完全忽略的东西。
我试图获取此脚本
import csv
in_file = open("11pmTrend.csv", 'r')
reader = csv.DictReader(in_file, delimiter= ',')
out_file = open("11pm.csv", 'w')
out_file.write("Rank,Symbol,CurrentPrice\n")
check_file = open("11pmQuote.csv", 'r')
check = csv.DictReader(check_file, delimiter=',')
trend = set()
trend_sn = dict()
for row in reader:
trend.add(row["Symbol"])
trend_sn[row["Symbol"]] = row["Rank"]
print(row["Symbol"])
stocknums = dict()
for row in check:
stocknums[row["Sym"]] = row["Price"]
print(row["Sym"])
for product in trend:
ref = 0
if product in stocknums:
if(stocknums[product] > 0):
ref = (row["Price"])
out_file.write(str(trend_sn[product]) + ',' + str(product) + ','+ str(ref)+ "\n")
首先查看此文件11 pmTrend.csv(平均约100行),其中包含Ranks和Stock / Crypto符号,并捕获符号,然后
Rank,Symbol
15,BTC
12,TSLA
打开第二个文件11 pmQuote.csv(平均约9000行),其中包含符号/价格,并获取相应的价格和
Sym,Price
TSLA,302.25
BTC,7000.76
将其输出到第三个文件11 pm.csv,它应如下所示:
Rank,Symbol,CurrentPrice
12,TSLA,302.25
15,BTC,7000.76
但相反,我得到了这个:
Rank,Symbol,CurrentPrice
12,TSLA,7000.76
15,BTC,7000.76
它从第一个文件抓取第一行,然后将该价格附加到两行而不是迭代/循环,并输出正确的价格以匹配第二行。
我想知道我做错了什么?
答案 0 :(得分:0)
您正在参考
for product in trend:
ref = 0
if product in stocknums:
if(stocknums[product] > 0):
ref = (row["Price"])
在最后一行[“Price”]中指的是已经完成的循环,因此row [“Price”]总是会给你最后一行的价格。
所以应该是:
for product in trend:
ref = 0
if product in stocknums:
if(stocknums[product] > 0):
ref = (stocknums[product])
因为库存[产品] =价格
我实际上不确定你想在最后一个循环中做什么,但我想你的代码中的最后一行(“out_file.write”)也在这个循环中而你没有提供一个有效的代码样品