繁体   English   中英

需要基于csv文件python中的列数创建多个变量

[英]Need to create multiple variables based on number of columns in csv file python

这是我的csv文件由6列组成的示例:

0.0028,0.008,0.0014,0.008,0.0014,0.008,

我想创建6个变量,以便以后在程序中使用这些数字作为值; 但是,列数将根据我打开的确切的csv文件而有所不同。

如果要手动执行此操作,并且列数始终为6,则只需创建如下变量:

thickness_0 = (row[0])
thickness_1 = (row[1])
thickness_2 = (row[2])
thickness_3 = (row[3])
thickness_4 = (row[4])
thickness_5 = (row[5])

有没有一种方法可以使用for循环创建这些变量,从而不必知道列数? 意味着它将创建与列数相同数量的变量?

有很多方法可以做您想做的事情,但是这被认为是非常糟糕的做法,最好不要将源代码与数据混合在一起。

如果您的代码依赖于来自“外部世界”的动态数据,请使用字典(或您的情况下的列表)以编程方式访问数据。

你可以用字典

mydict = {}

    with open('StackupThick.csv', 'r') as infile:
        reader = csv.reader(infile, delimiter=',')
        for idx, row in enumerate(reader):
            key = "thickness_" + str(idx)
            mydict[key] = row

像这样调用您的值:

print(mydict['thickness_3'])

从您的问题来看,我知道您的csv文件只有一行,且以逗号分隔。 如果是这样,并且如果您对dictionares不满意(如@Mike C.答案),则可以使用globals()将变量添加到全局命名空间,这是一个决定。

import csv

with open("yourfile.csv", "r", newline='') as yourfile:
    rd = csv.reader(yourfile, delimiter=',')
    row = next(rd)
    for i, j in enumerate(row):
        globals()['thickness_' + str(i)] = float(j)

现在,您可以使用任意数量的称为thickness_i的新变量,其中i是从0开始的数字。

请确保所有值都在csv文件的第一行中,因为此代码将忽略第一行以外的任何行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM