首页 > 解决方案 > 从 csv 文件创建新字典并将其用于多个功能

问题描述

基本上想从 csv 文件中提取值,并创建一个全局字典,我可以继续使用它来用于我的其他功能。

我不知道我在创建课程时是否使用了正确的方法,所以请耐心等待。

def spread_parse 但是,在运行函数时,会从 csv 文件中提取我想要的值。我的字典“pick”返回空白。我知道这种方法有效,因为如果我只是将函数“def spread_parse”和函数“def write”组合成一个函数,它将创建一个包含我想要的值的单独文件。问题是我想使用“pick”字典中包含的新添加的值创建其他函数,并且使用单个函数,这些值将仅限于该函数。如果我不正确,请纠正我。

import csv


class Parse:

    def __init__(self, filename):
        self.filename = filename
        self.picks = {}

    def spread_parse(self):
    """Parses csv file"""
        f = open(self.filename)
        csv_f = csv.reader(f)


        a = []
        b = []
        # Add players names to players
        for row in csv_f:
            a.append(row[2])

        # Have to repull csv file to add prices
        f = open(self.filename)
        csv_f = csv.reader(f)

        # Add prices of each player
        for row in csv_f:
            b.append(row[5])

        # Copy a & b lists into players and prices to remove Players,      
        # Names columns
        players = a[1:]
        prices = b[1:]

        self.picks = dict(zip(players, prices))


    def write(self):
    # create a file name based on week

    file = 'PGA_Picks23.txt'

    with open(file, 'w') as f:
        for key, value in self.picks.items():
            picky = (key, value)
            f.writelines("\n" + str(picky))

然后我继续在一个单独的文件中运行该类。

import Eh as e
e.Parse('DKSal.csv').spread_parse()
e.Parse('DKSal.csv').write()

当我运行这两个函数时,它只会返回一个空白文件。

标签: pythoncsvclassdictionary

解决方案


您正在创建两个单独的对象。您需要创建一个 Parse 对象并从中调用这两个方法:

import Eh as e
parse = e.Parse('DKSal.csv')
parse.spread_parse()
parse.write()

推荐阅读