Hallo ihr Lieben
Ich bin etwas verzweifelt.
Ich programmiere jetzt seit 2 Tagen mit Python und komme gerade nicht weiter
Ich habe bereits einige Tutorials gelesen und das Python Handbuch ebenfalls, aber wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht
Ich möchte aus einer Excel Tabelle in eine Klasse importieren, sodass ich die Werte der Excel-Tabelle später noch zur verfügung habe.
Dabei soll jeder Datensatz eine neue Instanz dieser einen Klasse bilden ... leider habe ich mit Klassen garkeine Erfahrung, was es mir auch gerdae sooo schwer macht
Vielleicht kann mich ja jemand auf den richtigen Weg führen.
Liebe Grüße
Sroken
Excel Tabelle in Klasse importieren
Hallo.
Gibt es einen Grund, warum es Excel-Tabellen sein müssen oder kannst du dir das Format selber aussuchen? Dann könntest du die Daten auch als csv-Datei speichern und mittels des bei Python mitgeliefertem csv-Modul laden.
Um was für Daten handelt es sich bei dir und warum sollen diese in eine Klasse gepackt werden?
Sebastian
Gibt es einen Grund, warum es Excel-Tabellen sein müssen oder kannst du dir das Format selber aussuchen? Dann könntest du die Daten auch als csv-Datei speichern und mittels des bei Python mitgeliefertem csv-Modul laden.
Um was für Daten handelt es sich bei dir und warum sollen diese in eine Klasse gepackt werden?
Sebastian
Das Leben ist wie ein Tennisball.
Um dein Wissen um Klassen zu erweitern kann ich dir nur das deutsche Python Tutorial ans Herz legen.
Um Excel Tabellen zu Parsen kannst du xlrd benutzen.
Um Excel Tabellen zu Parsen kannst du xlrd benutzen.
Hallo Sebastian,EyDu hat geschrieben:Hallo.
Gibt es einen Grund, warum es Excel-Tabellen sein müssen oder kannst du dir das Format selber aussuchen? Dann könntest du die Daten auch als csv-Datei speichern und mittels des bei Python mitgeliefertem csv-Modul laden.
Um was für Daten handelt es sich bei dir und warum sollen diese in eine Klasse gepackt werden?
Sebastian
danke erstmal für die Hilfe
Das Format ist eigentlich auch csv ... sitz nur seit 5 stunden dran und bin bissl wirr
der Import ansich funktioniert
Code: Alles auswählen
def readin():
import csv
csv.list_dialects()
file = '*.csv'
reader = csv.reader(open(file))
print ('')
print ('Feld 1; Feld 2; Feld 3; Feld 4 ')
print('')
for row in reader:
print('; '.join(row))
das soll aber erst passieren, nachdem die "2" gedrückt wurde und natürlich vorher mit der "1" eingelesen wurde.
Hallo Liffi, auch dir erstmal herzlichen Dank.Um dein Wissen um Klassen zu erweitern kann ich dir nur das deutsche Python Tutorial ans Herz legen.
Um Excel Tabellen zu Parsen kannst du xlrd benutzen.
wenn du wüsstest wiiiiiieeee viiiielll ich darins chon gelesen habe, aber steh immernoch auffem schlauch
ich vermute xlrd hat sich erledigt, da es sich ja wie oben bereits geschrieben um eine CSV handelt... sorry mein Fehler
So bin jetzt mal bissl weiter gekommen.
Durch den befehl csv.DictReader(*blub) - importiere ich ja eine csv quasi in eine Klasse... wenn ich das richtig verstehe:
dictreader.fieldname funktioniert hier nicht ... mach ich was falsch, oder hab ich nen riesen Denkfehler?
Vielen Dank schonmal
Durch den befehl csv.DictReader(*blub) - importiere ich ja eine csv quasi in eine Klasse... wenn ich das richtig verstehe:
Hoffe ich versteh das nicht falsch ... Was ich aber noch nicht ganz verstehe ... wie greife ich später darauf zurück?Create an object which operates like a regular reader but maps the information read into a dict whose keys are given by the optional fieldnames parameter. If the fieldnames parameter is omitted, the values in the first row of the csvfile will be used as the fieldnames. If the row read has more fields than the fieldnames sequence, the remaining data is added as a sequence keyed by the value of restkey. If the row read has fewer fields than the fieldnames sequence, the remaining keys take the value of the optional restval parameter. Any other optional or keyword arguments are passed to the underlying reader instance.
dictreader.fieldname funktioniert hier nicht ... mach ich was falsch, oder hab ich nen riesen Denkfehler?
Vielen Dank schonmal
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also ein DictReader liefert Dir nur eine Liste von Dictionaries, statt einer Liste von Tupeln / Listen.
Wo liegt denn jetzt überhaupt Dein Problem?
Wo liegt denn jetzt überhaupt Dein Problem?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
das Problem ist folgendes:
ich schreibe ein kleines Programm, quasi eine WaWi, in dem der User mit der Taste 1 ein csv mit produktnummer, bezeichnung, preis usw einlesen soll.
Diese "Tabelle" soll er sich dann mit Taste 2 anschauen können. Mit Taste 3/4 abbuchen/hinzubuchen und mit 5 die aktuellen Werte, nach Abbuchung und Zubuchung wieder ins csv schreiben ... aber ich glaub ich seh vor lauter Bäumen den Wald nicht
ich schreibe ein kleines Programm, quasi eine WaWi, in dem der User mit der Taste 1 ein csv mit produktnummer, bezeichnung, preis usw einlesen soll.
Diese "Tabelle" soll er sich dann mit Taste 2 anschauen können. Mit Taste 3/4 abbuchen/hinzubuchen und mit 5 die aktuellen Werte, nach Abbuchung und Zubuchung wieder ins csv schreiben ... aber ich glaub ich seh vor lauter Bäumen den Wald nicht
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Und was klappt daran (noch) nicht? Du schriebst ja oben, dass das Einlesen geklappt hat - wo liegen denn jetzt noch die aktuellen Probleme? Geht es um das Menü?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
also das einlesen klappt, ich kanns mir dann auch ein einziges mal anzeigen lassen:
Damit wirft er mir das Dingen jetzt genau einmal aus.
Aber irgendwie muss ich das ja in ne Klasse packen, damit ich später in den anderen Menus auch was daran ändern kann, bzw in der jeweiligen Mengenspalte des Produkts ab oder zubuchen kann ... oder denke ich zu kompliziert?
Oder bin ich einfach zu dumm dazu ... das befürchte ich nämlich langsam
Code: Alles auswählen
csv.list_dialects()
file = 'bestaende.csv'
r = csv.DictReader(open (file))
b = ''
while (b != '0' and b != '7'):
b = input('Wählen Sie eine Option: ')
print (' ')
print (' ')
if (b == '2'):
for l in r:
print (l)
Aber irgendwie muss ich das ja in ne Klasse packen, damit ich später in den anderen Menus auch was daran ändern kann, bzw in der jeweiligen Mengenspalte des Produkts ab oder zubuchen kann ... oder denke ich zu kompliziert?
Oder bin ich einfach zu dumm dazu ... das befürchte ich nämlich langsam
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Um Daten gleich weder Form ändern zu können, muss man den Code nicht einfach *magisch* in eine Klasse schreiben
Du musst Dir einfach ein Format ausdenken, welches Deine Daten abbilden kann und die gewünschten Zugriffs- bzw. Modifikationsoperationen unterstützt.
Mir fallen da spontan *Trommelwirbel* Listen ein!
Bau Dir eine zweidimensionale Liste; Über einen Indexzugriff kommst Du an eine einzelnes Item und kannst dieses Ändern. Das Aufabuen aus einem `csv.reader` sollte einfach sein - ich weiß nicht, ob der bereits Listen und Tupel zurückliefert, wenn ersteres, wäre das einfach:
Ansonsten eben
Nun brauchst Du eben Funktionen, die die Operationen auf der Datenstruktur durchführen. Das Einlesen haben wir jetzt ja fast schon
Ganz am Schluss musst Du Dir dann eben noch ein Menü schreiben, welches die einzelnen Funktionen aufrufbar macht - fertig ist die Laube
Du musst Dir einfach ein Format ausdenken, welches Deine Daten abbilden kann und die gewünschten Zugriffs- bzw. Modifikationsoperationen unterstützt.
Mir fallen da spontan *Trommelwirbel* Listen ein!
Bau Dir eine zweidimensionale Liste; Über einen Indexzugriff kommst Du an eine einzelnes Item und kannst dieses Ändern. Das Aufabuen aus einem `csv.reader` sollte einfach sein - ich weiß nicht, ob der bereits Listen und Tupel zurückliefert, wenn ersteres, wäre das einfach:
Code: Alles auswählen
reader = csv.Reader(...)
data = [line for line in reader]
Code: Alles auswählen
...
data = [list(line) for line in reader]
Ganz am Schluss musst Du Dir dann eben noch ein Menü schreiben, welches die einzelnen Funktionen aufrufbar macht - fertig ist die Laube
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
wohoooooo Hyperion! Das ist doch mal ein Ansatz auf dem ich evtl aufbauen kann
Werde das gleich heute abend mal testen udn berichten .. aber jetzt muss ich mal was schaffen .. mein Chef guckt schon agnz böse
danke dir VIELMALS!!!!!
Werde das gleich heute abend mal testen udn berichten .. aber jetzt muss ich mal was schaffen .. mein Chef guckt schon agnz böse
danke dir VIELMALS!!!!!
Ich glaube, für dich ist eine Klasse noch etwas magisches das dir helfen würde alle Probleme zu lösen wenn du nur das richtige Zauberwort wüsstest.sroken hat geschrieben:Aber irgendwie muss ich das ja in ne Klasse packen, damit ich später in den anderen Menus auch was daran ändern kann, bzw in der jeweiligen Mengenspalte des Produkts ab oder zubuchen kann ... oder denke ich zu kompliziert?
Wahrscheinlich willst du einfach zu viel am Anfang. Bist du im Tutorial denn wirklich schon beim Thema Klassen angekommen? Wenn ja, welche Probleme hast du dann konkret? Wenn nein, dann arbeite dich einfach weiter langsam durch bis du dort ankommst. Du kannst bis dahin problemlos Python-Programme schreiben ohne eine einzige eigene Klasse zu definieren. Grundlegende Datentypen und Datenstrukturen wie Tupel, Listen und Dictionaries solltest du allerdings kennen.
@sroken: Ich denke Du solltest das Programm erst einmal auf Eis legen bis Du das Tutorial in der Python-Dokumentation mindestens bis zum Thema Funktionen (inklusive) durchgearbeitet hast. Es macht wenig Sinn ein für Anfänger relativ umfangreiches Programm mit Menü anzufangen, solange man nicht die Grunddatentypen kennt und weiss wie man ein Programm auf Funktionen aufteilen kann.
BlackJack hat geschrieben:@sroken: Ich denke Du solltest das Programm erst einmal auf Eis legen bis Du das Tutorial in der Python-Dokumentation mindestens bis zum Thema Funktionen (inklusive) durchgearbeitet hast. Es macht wenig Sinn ein für Anfänger relativ umfangreiches Programm mit Menü anzufangen, solange man nicht die Grunddatentypen kennt und weiss wie man ein Programm auf Funktionen aufteilen kann.
Nehm ich mir zu Herzen ... also heute abend erstmal ordentliche Lektüre lesen