【发布时间】:2016-12-23 01:22:10
【问题描述】:
python 新手,并尝试构建一个简单的 CSV 阅读器来创建现有工具的新交易。理想情况下,我想建立一个字典来简化设置新交易所需的参数(而不是使用 row[1]、[2]、[3] 等,我想用我的标题替换阅读起息日、交易日、价格、数量等)
我在下面创建了字典键,但无法将它们链接到我的脚本以创建新交易。我应该用什么来代替行?任何建议表示赞赏!谢谢...
代码如下:
import acm
import csv
# Opening CSV file
with open('C:\Users\Yina.Huang\Desktop\export\TradeBooking.csv', 'rb') as f:
reader = csv.DictReader(f, delimiter=',')
next(reader, None)
for row in reader:
# Match column header with column number
d = {
row["Trade Time"],
row["Value Day"],
row["Acquire Day"],
row["Instrument"],
row["Price"],
row["Quantity"],
row["Counterparty"],
row["Acquirer"],
row["Trader"],
row["Currency"],
row["Portfolio"],
row["Status"]
}
NewTrade = acm.FTrade()
NewTrade.TradeTime = "8/11/2016 12:00:00 AM"
NewTrade.ValueDay = "8/13/2016"
NewTrade.AcquireDay = "8/13/2016"
NewTrade.Instrument = acm.FInstrument[row["Instrument"]]
NewTrade.Price = row[4]
NewTrade.Quantity = row[5]
NewTrade.Counterparty = acm.FParty[row[6]]
NewTrade.Acquirer = acm.FParty[row[7]]
NewTrade.Trader = acm.FUser[row[8]]
NewTrade.Currency = acm.FCurrency[row[9]]
NewTrade.Portfolio = acm.FPhysicalPortfolio[row[10]]
NewTrade.Premium = (int(row[4])*int(row[5]))
NewTrade.Status = row[11]
print NewTrade
NewTrade.Commit()
【问题讨论】:
-
行如何被数字索引和键引用? Row 是一个字典,所以我不确定
row[4]将如何工作,因为 DictReader 只会使用字符串字典键。 -
请注意,编辑后您不再创建字典,而是创建集合。
-
谢谢——是的,看起来我做到了。我可以用集合和字典来完成同样的事情吗?
标签: python csv dictionary key