Python + CSV文件:如何自动为对象创建唯一名称,并从特定单元格提取数据

我一直在为考古学课程介绍数据科学,目前正为第一件(未标记)的作品而苦苦挣扎。虽然我了解了我打算编写的代码的整体逻辑,并且在用psudocode编写代码时没有遇到问题,但我在语法方面仍处很多麻烦。我已经向我的讲师寻求帮助/建议,但是我的讲师并不擅长解释语法。抱歉,这是超级基础-我对编程很陌生。

我想做的是打开目录中的每个CSV文件,为其创建一个唯一命名的对象,将来自CSV文件中特定单元格的数据存储在该对象中。

我已经在另一个模块中定义了对象(Table)的类,并将其导入。我还定义了目录路径。我不能用熊猫做这项工作。

到目前为止,我编写的唯一真正相关的实际代码是:

import os
import csv
from table import Table
from analysis import Analysis 

src_folder = os.path.dirname(os.path.realpath(__file__))
data_folder = os.path.join(src_folder,test_data")
os.chdir(data_folder)

for infile in os.listdir(data_folder):
    if infile.endswith('.csv'):
        # to check if working,delete from final
        print "Current File Being Processed is:  " + infile 
        # define object as instance of Table()
        with open(infile) as csvfile: 
            reader = csv.reader(csvfile)
            # skips the header row
            next(reader,None)
            for row in reader:
               # prints fourth column to make sure its actually reading data
               print(row[3])

我在这里要做的是为每个具有唯一名称的文件自动创建一个Table()对象。我还希望能够从CSV文件中的特定单元格而不是整个行中定义两个值(self.betaself.alpha)。有办法做到这两种方法吗?

kkaren 回答:Python + CSV文件:如何自动为对象创建唯一名称,并从特定单元格提取数据

我不是将每个Table()对象存储在变量中,而是创建一个字典,将每个csv文件的文件名作为键。

因此,在for循环之前,声明一个空字典csvs = {}

然后对于每个csv文件,我将表对象另​​存为以文件名为键的值。

在for循环内(即每个文件)

csvs[infile] = Table(alpha=x,beta=y)

您必须确保可以在对象初始化时同时设置alpha和beta。

您可能可以在一行代码中完成此操作,并研究字典理解。

您可能要保存此python对象,因此不必每次都生成它。您可以使用pickle来做到这一点。

本文链接:https://www.f2er.com/3165352.html

大家都在问