【发布时间】:2018-03-05 20:17:09
【问题描述】:
我有一些代码,想知道如何正确格式化并保存到 csv 文件。我无法找到以我想要的方式回答这个问题的问题,而且由于我对 python 还很陌生,所以我在更改代码以将类似问题回答为适合我需要的东西时遇到了麻烦。
它分为以下几部分:
assets = [asset_1, asset_2, asset_3]
for i in range(len(assets)):
price = data.current(assets[i], "price")
现在如果我
print price
它打印为
price 1
price 2
price 3
我可以毫不费力地将它打印为price 1, price 2, price 3,但写print price[0], price[1], price[2], newline 之类的东西对我来说似乎很笨拙,尤其是当我希望将来将其扩展到更多资产时。我遇到的所有解决方案都删除了换行符,然后导致price1, price2, price3, price1, price2...,我希望换行符专门在价格 3 之后发生。我也能够让它毫无问题地将数据导出到 csv,但是 csv只有一列类似于第一个打印语句。如何将 3 个价格中的每一个都放入 csv 然后换行?
我尝试遵循this 的答案,并更改了我的打印语句以效仿,但在我的情况下尝试打印价格 [index] 索引时出现语法错误,我的情况是 0:2(尝试 1:3 以防万一但没有按预期工作)
这是我的实际代码。
from catalyst.api import record, symbol, symbols
from datetime import datetime
import os, csv, pytz, sys
import catalyst
def initialize(context):
# Portfolio assets list
context.assets = [symbol("XMR_DASH"), symbol("BTC_XMR"), symbol("BTC_DASH")]
'''
# Creates a .CSV file with the same name as this script to store results
context.csvfile = open(os.path.splitext(os.path.basename(__file__))[0]+'.csv', 'w+')
context.csvwriter = csv.writer(context.csvfile)
'''
def handle_data(context, data):
date = context.blotter.current_dt # Current time for each iteration in the simulation
price = data.current(context.assets, "price")
print price
'''
for i in range(0,3):
price = data.current(context.assets[i], "price")
print price[any index gives syntax error]
'''
def analyze(context=None, results=None):
pass
'''
# Close open file properly at the end
context.csvfile.close()
'''
start = datetime(2017, 7, 30, 0, 0, 0, 0, pytz.utc)
end = datetime(2017, 7, 31, 0, 0, 0, 0, pytz.utc)
results = catalyst.run_algorithm(start=start, end=end, initialize=initialize,
capital_base=10000, handle_data=handle_data,
bundle='poloniex', analyze=analyze, data_frequency='minute')
我不需要帮助将数据写入 csv,但需要帮助格式化写入的数据。最好答案也适用于打印语句,这样我就可以在转到 csv 之前可视化正在发生的事情。
【问题讨论】: