bestimmte Zeile aus Tabelle ausgeben lassen

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
Naysh
User
Beiträge: 2
Registriert: Mittwoch 21. April 2021, 18:46

Hallo Community,

ich arbeite mich seit einer Weile für ein Projekt in Python ein, an der Uni haben wir bislang nur mit C++ gearbeitet und auch dieser Kurs ist für mich nun schon eine Weile her...

Naja, zumindest liegt mir für mein Projekt eine gut 30.000 Zeilen schwere Tabelle in Form einer .csv-Datei vor, die es auseinander zu nehmen gilt. Analysieren tu ich die Werte anderweitig, allerdings möchte mein Projektleiter, dass wir zur Ausgabe eben Python nutzen.

Ich bin soweit, dass Python mit die gesamte Tabelle anzeigt, soweit sogut. Jz möchte ich eig nur, dass ich ein bestimmtes Stichwort eingeben kann (zBsp. dass in Spalte x der Wert/der Ausdruck y stehen muss) und er mir dann nur noch die dazugehörige Zeile ausgibt, oder eben alle Zeilen die dieses Stichwort enthalten.

Bislang hatte ich die Überlegung, die Bedingung per input einzugeben und per if überprüfen zu lassen, Ausgabe dann über print. Leider fehlt mir noch der Ansatz, mit welcher Schleife ich eine konkrete Spalte auf dieses Stichwort durchlaufen lassen kann...

Wie man vielleicht merkt, bin ich noch recht unbeholfen, was das programmieren angeht...

Ich hoffe sehr, dass ihr mir dabei helfen könnt! Ein paar Tutorials hab ich schon durch, aber auf die schnelle fehlt mir einfach ein Ansatz und mir fehlt die Zeit, mich noch länger durch das viele Wissen durch zu wühlen :/

Beste Grüße,
Naysh
Benutzeravatar
Dennis89
User
Beiträge: 1556
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

vielleicht kannst du mal deinen bisherigen Code posten.
Zum lesen von *.csv- Dateien gibt es das 'csv'-Modul. Hier die Doku:
https://docs.python.org/3/library/csv.html

Ich habe eine *.csv - Datei erstellt mit dem Name werte.csv:

Code: Alles auswählen

x,y,
Python,20
C++,30
Java,40
Mit diesem Code wird der y-Werte des eingegebenen Suchwort ausgegeben, wenn es sich in der x-Spalte der werte.csv - Datei befindet.

Code: Alles auswählen

#!/usr/bin/env python3

import csv

def main():
    keyword = input("Bitte Suchwort eingeben:")
    with open('werte.csv', newline='') as csvfile:
        reader = csv.DictReader(csvfile, delimiter=',')
        for row in reader:
            if keyword in row['x']:
                print(row['y'])
            
if __name__ == '__main__':
    main()
War das so gewünscht oder habe ich dich falsch verstanden?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich wuerde zur Bibliothek Pandas raten, die hat auch eine Vielzahl von Beispielen, wie man die eingelesenen Daten filtert.
Naysh
User
Beiträge: 2
Registriert: Mittwoch 21. April 2021, 18:46

Hallo Dennis,

vielen Dank erstmal für deine Idee!

Du hast mich fast korrekt verstanden, am Ende soll nämlich die Zeile ausgegeben werden, die zum in der Spalte gesuchten Wert gehört.
Angewendet an deinem Beispiel: wenn ich in Spalte x nach Python suche, möchte ich als Ausgabe [Python, 20] haben.

Nur leider scheint die Ausgabe einer Zeile einer anderen Logik zu folgen als der einer Spaltenausgabe...

VG Naysh
Benutzeravatar
Dennis89
User
Beiträge: 1556
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

schau dir doch mal die Doku an, die ich dir verlinkt habe.
Du kannst auch 'print(row['x'], row['y'])' oder 'print(row)' oder die Werte in eine Liste schreiben.

Die Antwort fällt deswegen so kurz aus, weil __deets__ dir zu 'Pandas' geraten hat. Du solltest wissen das ich in meiner Freizeit ein kleines bisschen Python gelernt habe, __deets__ dagegen ist Programmierer. Ich dann deiner Stelle würde auf seinen Rat hören und nach den genannten Beispielen suchen.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten