python3从textfile中查找信息

时间:2018-06-14 00:25:46

标签: python-3.x pandas text-files

在我写的一个程序中,我每天将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文件并将日期和价格保存到两个单独的列表中,我不知道如何处理它

2 个答案:

答案 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