Как исправить ошибку «__new __ (), в которой отсутствуют 3 обязательных позиционных аргумента: ..» в Python - PullRequest
0 голосов
/ 12 октября 2019

Я работаю над кодом Python и получаю эту ошибку: "Ошибка типа: new () отсутствует 3 обязательных позиционных аргумента: 'name', 'freq' и 'gen'"

Я импортирую CSV-файл для создания списка кортежей, используя именованный кортеж.

import csv
from collections import namedtuple

Rec = namedtuple('Rec', 'year, name, freq, gen')

def read_file(file):  
    with open(file) as f:
        reader = csv.reader(f)
        next(reader)
        for line in reader:
            recs= Rec(line)
        return recs

read_file("./data/file.csv")

Возможно, это какая-то проблема новичка, но это то, чем я являюсь :) Буду признателен за любую помощь!

1 Ответ

1 голос
/ 12 октября 2019

line - это кортеж. Когда вы вызываете Rec(line), весь этот кортеж интерпретируется как аргумент year (остальные три аргумента отсутствуют, следовательно, ошибка).

Чтобы исправить это, измените

recs = Rec(line)
*От 1008 * до
recs = Rec(*line)

или

recs = Rec._make(line)

https://docs.python.org/2/library/collections.html#collections.somenamedtuple._make

...