找到了一个.dat文件,里面有关于共享的信息。必须创建一个计算平均市场价格的模块

2024-10-03 13:25:34 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我有4个.dat文件,格式如下:

Purchase Date     Purchase Price     Shares     Symbol

25 Jan 2014           63.70            40         FB

25 Jan 2014           64.04            40         FB

25 Jan 2014           63.97            175        FB

25 Jan 2014           63.72            80         FB

需要注意的是,每一列(购买日期、购买价格、股份、符号)都由制表符(\t)分隔。此外,“2014年1月25日”仅用逗号分隔。然后是股票价格的制表符分隔,因为它在下一栏,以此类推。显然还有空行。你知道吗

我必须创建一个模块,读取我将放入其中的文件(该文件是4个文件的1个示例,格式相同,但价格和股票数量不同),并计算该股票的平均市场价格(价格x股票/股票总数)

所以基本上,问题是如何让python指向我想要的信息。:/

到目前为止我唯一想到的是

def averagePricePerShare(x):

   """Calculates average market price"""

    sharesdata_file=(open(x,"r")) #opens file
    sharesdata_str=sharesdata_file.read() #reads contents of file into a string
    marketavgprice=(price*shares)/totalshares

当然,在最后一行中,这些变量还没有定义,因为我不知道如何找到它们。当然,我必须使用.find()函数,我真的不知道。任何帮助都将不胜感激。这是我万不得已的办法,在论坛上寻求帮助之前,我一直试图自己想出一些办法。可能是因为我在过去的8个小时里一直在做这个作业(相当大的作业,这是最后一部分)

编辑:我的错。它的出发点似乎是使用.split()函数拆分所有有空行的文本,然后再拆分有制表符空格的文本。split('\n')和.split('\t')之类的。或者去掉空行,然后分别处理每一行,并在.split('\t')处拆分行,这样每一行的购买价格为.split('\t')[1],股票价格为.split('\t')[2]?如果是这样的话我该怎么做?你知道吗

编辑2:我必须在不使用内置函数的情况下完成它。手动。我发现了:

first_useful_line=sharesdata_str.split('\n')[2]

等等。所以现在我想我会像这样把这条线分成几列

firstlineprice=first_useful_line.split('\t')[1]

有什么想法?你知道吗


Tags: 文件函数fb格式价格purchasepricejan
1条回答
网友
1楼 · 发布于 2024-10-03 13:25:34

使用csv模块读取数据,指定delimiter="\t"

import csv

with open("myfile.dat", "rb") as inf:                # if Python 2.x
# with open("myfile.dat", "r", newline="") as inf:     # if Python 3.x
    incsv = csv.reader(inf, delimiter="\t")

    # skip header row
    next(incsv, None)   

    # read data
    for row in incsv:
        # now do something with row!

相关问题 更多 >