Python2.7 - 解析1.csv,在#2.csv中找到匹配,然后从2.csv和输出中复制数据

时间:2018-04-11 06:44:47

标签: python python-2.7 csv

必须是我完全忽略的东西。

我试图获取此脚本

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

它从第一个文件抓取第一行,然后将该价格附加到两行而不是迭代/循环,并输出正确的价格以匹配第二行。

我想知道我做错了什么?

1 个答案:

答案 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”)也在这个循环中而你没有提供一个有效的代码样品