Как преобразовать список в объект с несколькими параметрами - PullRequest
0 голосов
/ 10 февраля 2020

поэтому у меня есть объект с именем element, и у меня есть csv-файл, который содержит 118 строк информации об элементе, например: atomi c число, имя, символ и т. Д. c. поэтому для объекта он имеет 8 параметров, а файл CSV упорядочен таким образом, что каждый параметр соответствует столбцу, поэтому я хочу, чтобы каждая строка файла CSV равнялась одному элементу

from instream import InStream 
from outstream import OutStream 
import stdarray 
from element import Element


InStream('periodic_table.csv') 

instream = InStream('periodic_table.csv')
i = 0
while instream.hasNextLine():
    i += 1
    row = (instream.readLine())
    data = (row.split(',')) 
    column = len(data)

out = stdarray.create1D(i) 

InStream('periodic_table.csv') 

instream = InStream('periodic_table.csv')
instream.readLine()
i = 0
while instream.hasNextLine():
    i += 1
    row = (instream.readLine())
    data = (row.split(','))

    out[i] = Element(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7])

последняя часть это то, что я пытался, я искал более эффективный способ go об этом

1 Ответ

2 голосов
/ 10 февраля 2020
out[i] = Element(*data)

или, если data может иметь больше элементов, возьмите фрагмент:

out[i] = Element(*data[:8])

Еще лучше, используйте csv.DictReader, чтобы имена столбцов CSV соответствовали именам параметров Element и data может быть диктовкой ключевых аргументов:

out[i] = Element(**data)

Тогда вам не нужно беспокоиться о порядке и вы получите информативные сообщения об ошибках, если что-то пойдет не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...