Seite 1 von 1

Werte extrahieren und jeweils als Liste zurück geben

Verfasst: Freitag 11. März 2022, 18:01
von zoro35
Hey,
Ich muss 3 Werte aus einer bestehenden Liste extrahieren und jeweils als Liste zurück geben.
was ich bis jetzt habe: (überall wo das # ist fehlt mir etwas) wäre lieb wenn jmd mir helfen könnte

def get_data_for_country(filename,country):
file=open(filename)
info_line=file.readline()

years=[]
prod_in_t=[]
area_in_ha=[]

for line in file:
line.split(sep=',')
if line[1] == country:
#
year=line[]
prod=line[]
area=line[]
#



file.close()

return years, prod_in_t, area_in_ha

Re: Werte extrahieren und jeweils als Liste zurück geben

Verfasst: Freitag 11. März 2022, 19:12
von Sirius3
Dateien öffnet man in einem with-Statement. Bei Text-Dateien sollte man auch immer das passende Encoding angeben.
Statt drei parellele Listen zu führen, nimmt man nur eine Liste und steckt in die komplexere Objekte. Das Ergebnis Deines splits mußt Du auch in einer Variable speichern ›parts = line.split(',')‹.

Es scheint sich ja um eine csv-Datei zu handeln, also benutzt man das csv-Modul

Code: Alles auswählen

import csv
from collections import namedtuple

CountryData = namedtuple("CountryData", "year, production_in_t, area_in_ha")

def get_data_for_country(filename,country):
    with open(filename, newline="", encoding="utf8") as file:
        lines = csv.reader(file)
        info_line = next(lines)
        result = []
        for row in lines:
            if row[1] == country:
                year = ...
                production = ...
                area = ...
                result.append(CountryData(year, production, area))
    return result
Den Aufbau der einzelnen Zeilen weißt ja nur Du selbst.