簡體   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