在我写的一个程序中,我每天将BTC的平均价格保存为.txt文件,格式为:
Date,Price
"Jun 05, 2018",7567.330
"Jun 04, 2018",7618.500
"Jun 03, 2018",7676.170
"Jun 02, 2018",7590.080
"Jun 01, 2018",7521.070
"May 31, 2018",7450.160
"May 30, 2018",7438.120
...
在我的代码中,我有一个日期列表,我必须将列表中的日期与文本文件中的日期相匹配,并找到当天的平均BTC价格。我打算将所有日期和价格分别保存到列表中,分别称为“coin_dates”和“coin_prices”。
我尝试在如何打开json字典后模拟我的代码,区别在于我带走了“json.load(f)”:
def initial_price(df):
with open(df, "r") as f:
coin_dates = [d["Date"] for d in f]
coin_prices = [d["Price"] for d in f]
initial_price("btc.txt")
但是我收到了这个错误:
Traceback (most recent call last):
File "getICOdate.py", line 158, in <module>
initial_price("btc.txt")
File "getICOdate.py", line 155, in initial_price
coin_dates = [d["Date"] for d in f]
File "getICOdate.py", line 155, in <listcomp>
coin_dates = [d["Date"] for d in f]
TypeError: string indices must be integers
我想打开一个txt文件并将日期和价格保存到两个单独的列表中,我不知道如何处理它
答案 0 :(得分:0)
首先,您应该考虑使用第一个程序(或程序的第一部分)创建纯文本文件(看起来像csv )并重写它以生成文件JSON或pickled python对象。
1-将JSON转储到文件: 如果您将字典转换为JSON,则可以使用JSON python library进行类似的操作。
import json
with open('data.txt', 'w') as outfile:
json.dump(data, outfile)
如果其他应用程序正在阅读(相同语言或不同语言),JSON将运行良好。
2- Python Pickling: 如果它的python和python,酸洗效果也很好。
with open(fileName + '.pkl', 'wb') as f:
pickle.dump(object_to_store, f, pickle.HIGHEST_PROTOCOL)
总之,不要使用您已经制作的纯文本文件使自己更难。生成易于加载并转出的内容。 JSON在这一点上几乎是行业标准,在任何平台上使用都非常方便!如果您有具体问题,请告诉我。
答案 1 :(得分:0)
您是否尝试打印d
以查看其中包含的内容?您会注意到它只是一个表示文件中一行的字符串。您假设python会自动将其解析为数组,甚至将键与CSV文件中的标题匹配。
你必须首先解析你的字符串,或者更好的是,使用已经为你的字符串执行此操作的库。这是一个关于pandas的例子:
import pandas as pd
df = pd.read_csv('btc.txt')
df[df["Date"] == "Jun 05, 2018"]["Price"] # 7567.330