Werte extrahieren und jeweils als Liste zurück geben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
zoro35
User
Beiträge: 3
Registriert: Freitag 11. März 2022, 17:52

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
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Antworten