Seite 2 von 4
Re: Import csv in python3
Verfasst: Mittwoch 7. Oktober 2020, 19:25
von __blackjack__
@Steffi: Bitte echten, lauffähigen Code zeigen. Das ist so ganz sicher nie gelaufen.
Re: Import csv in python3
Verfasst: Mittwoch 7. Oktober 2020, 19:26
von Steffi
leider kann ich meinen Code nicht mit Einrückungen schicken. Keine Ahnung warum, das nicht geht
Re: Import csv in python3
Verfasst: Mittwoch 7. Oktober 2020, 19:42
von sparrow
Verwened Code-Tags.
Die werden automatisch eingefügt, wenn man im "vollständiger Editor & Vorschau" den </>-Button drückt.
Zwischen die Tags gehört dein Code. Dann bleibt auch die Einrückung erhalten.
Re: Import csv in python3
Verfasst: Mittwoch 7. Oktober 2020, 20:11
von __blackjack__
@Steffi: Ich meinte nicht die Einrückung. Der Code ist auch mit Einrückung garantiert nie gelaufen.
Re: Import csv in python3
Verfasst: Mittwoch 7. Oktober 2020, 20:21
von Sirius3
Du mußt lernen, was Variablen sind, nämlich Platzhalter für Werte. Du übergibst csv.reader einen String, aber der hat nichts mit dem File-Objekt zu tun, das in der Zeile davor an die Variable `stock` gebunden wird. Das File-Objekt wird aber zum Schreiben von Binären Daten geöffnet, Du willst aber Text lesen.
Die Variable `search` wird auch nicht verwendet, statt dessen Vergleichst Du `field` mit dem Funktionsobjekt `input`.
Wie Dein Output zustande gekommen ist, kann ich aber von dem Code nicht ableiten.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 06:21
von Steffi
Code: Alles auswählen
import csv
search = input("Suchbegriff: ")
stock = open ("05_20.csv","wb")
reader = csv.reader("05_20")
for row in reader:
for field in row:
if field == input:
print ("Gefunden n")
print (row[0])
Dieser Code läuft bei mir in Python 3!!! Das ist mein echter Code. Ich möchte gerne als Ausgabe die Zeile vom Kontoauszug haben, in der der Suchbegriff vorkommt.
Ich glaube, dass mein Code nur ausgibt, dass der Begriff in dem Dokument 05 20 vorhanden ist.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 06:52
von Jankie
Die Einrückung stimmt nicht ganz, eingerückt wird mit 4 Leezeichen. Zwischen die Klammern beim Funktionsaufruf und dem Funktionsnamen gehört keine Leerstelle. Mit dem Code wirst du nie etwas finden, weil du field mit einem Objekt vom Typ builtin_function_or_method vergleichst. Du müsstest mit search vergleichen. Dateien öffnet man mit dem
with Statement, da spart man sich das schließen - was bei dir auch komplett fehlt.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 06:54
von Steffi
@Sirius: mit welchem befehl lese ich denn text ein? ich würde deine Hinweise gerne umsetzen, weiss aber noch nicht so recht wie.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 07:45
von Sirius3
@Steffi: jetzt hast Du ja auch einen anderen Code, da sind Deine drei Ausrufezeichen ganz fehl am Platz.
Und die "Befehle" sind prinzipiell ja ok, aber die Parameter sind falsch, weil Du Variablen falsch benutzt.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 08:11
von sparrow
Im ein grundlegendes Verständnis zu erhalten, bietet sich das
offizielle Tutorial an.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 08:28
von /me
In `if field == input` vergleichst du, ob der Inhalt der Variable `field` gleich der Funktion `input` ist. Wohlgemerkt, du vergleichst mit der Funktion selber, nicht mit irgendeinem Ergebnis das du durch Aufruf dieser Funktion irgendwann mal eingelesen hast. Dieser Vergleich schlägt natürlich immer fehl.
Was du eigentlich möchtest ist `field` mit `search` zu vergleichen.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 19:35
von Steffi
Code: Alles auswählen
import csv
search = input("Suchbegriff: ")
with open("05_20.csv","rb"):
reader = csv.reader("05_20")
for row in reader:
for field in row:
if field == search:
print ("Gefunden n")
print (row[0])
Ich vergleiche jetzt mit search und habe die Datei mit with geöffnet. Leider ist das Ergebnis genau dasselbe?!?! <was mache ich falsch?
Ergebnis:
Suchbegriff: amazon
0
5
_
2
0
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 19:52
von Sirius3
Was falsch ist, habe ich schon ganz zu Anfang geschrieben: Du benutzt die geöffnete Datei nicht. Jetzt ist sie nicht mal mehr einer Variable zugewiesen.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 19:53
von narpfel
@Steffi: Erkläre mal, was die Zeile
Steffi hat geschrieben: Donnerstag 8. Oktober 2020, 19:35
macht.
Re: Import csv in python3
Verfasst: Donnerstag 8. Oktober 2020, 20:02
von __blackjack__
Vielleicht hilft es ja auch das einfach mal auszuprobleren:
Code: Alles auswählen
In [1]: import csv
In [2]: reader = csv.reader("05_20")
In [3]: list(reader)
Out[3]: [['0'], ['5'], ['_'], ['2'], ['0']]
Re: Import csv in python3
Verfasst: Freitag 9. Oktober 2020, 06:52
von Steffi
ich weiss nicht wie ich den Code schreiben soll. Ich probiere viel aus, da ich Python nur ein Semester hatte und sonst auch nicht anwende. Ich hatte die Variable vor "with open" weggelassen, da es mit einer Variablen zu einem Fehler kam. Ich möchte eigentlich jeweils die Zeilen angezeigt bekommen in meiner csv Datei, in dem der Suchbegriff vorkommt. Vielleicht kann mir ja jemand einen Code zeigen der funktioniert. Ich bin langsam völlig verwirrt von den Hinweisen. Sorry.
Re: Import csv in python3
Verfasst: Freitag 9. Oktober 2020, 07:08
von Sirius3
Hat man Dir schon gesagt, aber hier nochmal: eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
csv-Dateien sind Text-Dateien, daher ist der Lesemodus "r" und nicht "rb". Das "r" kann man dann auch gleich ganz weglassen, weil das der Default ist. Man sollte daher auch immer das richtige Encoding angeben.
Dann verstehe ich nicht, wie es so schwer sein kann, denn ein funktionierendes Beispiel steht doch in der
Dokumentation zu csv.reader, und die sollte immer die erste Quelle sein, wenn man was neues ausprobiert.
csv.reader erwartet als erstes Argument normalerweise ein File-Objekt. Dass man da jedes beliebige iterierbare Objekt übergeben kann, ist eine triviale Verallgemeinerung in Python und oft ganz praktisch, bei Strings aber auch oft ein Quell der Verwirrung. Wenn ich die Sprache designed hätte, hätte ich mit dem jetzigen Wissen Strings nicht direkt iterierbar gemacht, aber das ist eine andere Geschichte.
Code: Alles auswählen
import csv
search = input("Suchbegriff: ")
with open("05_20.csv", encoding="utf8", newline="") as csvfile:
reader = csv.reader(csvfile)
for row in reader:
if search in row:
print("Gefunden n")
print(row[0])
Re: Import csv in python3
Verfasst: Freitag 9. Oktober 2020, 10:07
von Steffi
@Sirius: vielen Dank für deine Antwort. Unser Prof hat uns das mit dem Tab bei gebracht, aber ich werde mir jetzt die 4 Leerzeichen angewöhnen.
Habe deinen Code ausprobiert. Leider gibt mir der Code keine Ergebnisse aus. Er funktioniert ohne Fehlermeldungen, aber leider gibt er mir nicht die Zeile aus, in der mein Suchbegriff sich befindet.
Ja, vielleicht tue ich mich hier echt schwer, danke nochmal für den Dokumentations-Link, aber ich kann leider noch nicht einfach so einen Code runter programmieren. Ich muss es jetzt leider in meinem Studium. Daher hoffe ich einfach auf eure Hilfe, auch wenn ich mich etwas blöd hier anstelle.
Re: Import csv in python3
Verfasst: Freitag 9. Oktober 2020, 10:24
von Sirius3
Um sagen zu können, warum nichts ausgegeben wird, brauchen wir den Inhalt der Datei und den eingegebenen Suchbegriff.
Re: Import csv in python3
Verfasst: Freitag 9. Oktober 2020, 10:31
von __blackjack__
Der Code sollte bei der Einrückung den ersten Wert jedes Datensatzes ausgeben, unabhängig vom Suchwort. Falls da tatsächlich nichts ausgegeben wird, ist die Datei leer. Vielleicht als Folge von vorherigen Versuchen wo die Datei mit "w" im Dateimodus geöffnet wurde.