Seite 1 von 1

Variable auslesen und aufsplitten

Verfasst: Dienstag 12. März 2013, 18:46
von fishtown
Moin,
ich versuche mich gerade in der Programmierung mit Python und bin bis jetzt begeistert.

Aber, wie sollte es auch anders sein, stehe ich vor meinem ersten Problem. Ich habe eine Variable, die mit mehreren Werten gefüllt ist, alle getrennt voneinander mit einem Komma. Nun möchte ich die auslesen, und jeden einzelnen Wert dazu verwenden um in einer Tabelle Spalten anzulegen.

Also:
variable = "wert1, wert2, wert3,..."

Wie kann ich das am besten umsetzten, damit ich als Ergebnis eine Tabelle mit den Spalten "wert1", "wert2", ... habe?

Danke für die Hilfe.

Re: Variable auslesen und aufsplitten

Verfasst: Dienstag 12. März 2013, 18:56
von BlackJack
@fishtown: Schau Dir mal die Methoden auf Zeichenketten an, da gibt es eine zum Aufteilen in eine Liste. Die sollte eigentlich in fast jeden Grundlagentutorial vorkommen.

Was meinst Du mit Tabelle? Einen Datentyp der so heisst, gibt es nicht. Möchtest Du vielleicht eine verschachtelte Liste anlegen, also eine Liste die weitere Listen enthält die jeweils alle Werte einer Tabellenzeile enthalten?

Re: Variable auslesen und aufsplitten

Verfasst: Dienstag 12. März 2013, 19:19
von fishtown
Danke für die schnelle Antwort.

Ich meine mit Tabelle eine Datenbanktabelle. Sorry, hätte ich besser beschreiben müssen.

Re: Variable auslesen und aufsplitten

Verfasst: Dienstag 12. März 2013, 20:28
von EyDu
Am besten verrätst du uns, wo die Daten herkommen. Liest du sie aus einer Datei ein (und wie sieht das Format aus) oder werden die Daten irgendwie anders eingegeben? Was sind das für Daten? Was willst du mit den Daten machen? Warum soll das ganze in eine Datenbank? Und was für eine Datenbank benutzt du?

Mit den Informationen kann man dir sicher besser helfen.

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 16:13
von fishtown
Die Daten kommen als Variable (Keyword) aus einem Programm, das Python als Sprache integriert hat. In diesem 'Keyword' sind verschiedene Werte, jeweils durch ein Komma getrennt, hinterlegt. Genau diese Werte (Anzahl kann schwanken, je nach Nutzung des Programms) benötige ich als Spaltenbenennung für eine sqlite3 oder mysql Datenbank.

Ich will also die Werte des Keywords auslesen, diese vereinzeln, und dann mit 'CREATE Table Datenbankname (Wert1, Wert2,...)' eine Tabelle anlegen.

Warum Datenbank? Weil es die effizienteste Methode ist, um diese Daten zu verarbeiten (Suche, Sortierung, Mehrbenutzerzugriff,...)

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 16:30
von BlackJack
@fishtown: Nur falls die Antwort untergegangen ist: Das Python-Tutorial durcharbeiten und bei Zeichenketten dort auch dem Link zur Referenz folgen wo die Methoden auf Zeichenketten gelistet sind.

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 16:57
von fishtown
Thx BlackJack. Bin gerade beim Kapitel split und list. Denke, ich komme der sache näher.

Ok, denke ich hab nen Weg gefunden (zumindest den Ansatz):

1. Zählen der Wörten im Keyword mit i = len(keyword)
2. dann 'irgendwie' mit for ... keyword ein CREATE TABLE DBName (...) ausführen. Wie gesagt, irgendwie.

Bin ich damit auf dem richtigen Weg?

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 17:42
von BlackJack
@fishtown: Fast. Lass das `i` weg. Man kann in Python mit ``for`` direkt über die Elemente von Listen (und Sequenztypen allgemein) iterieren. Den Umweg über einen Index braucht man da nicht. Und eine Liste, beziehungsweise allgemein ein iterierbares Objekt mit Zeichenketten kann man mit der `join()`-Methode auf Zeichenketten zusammen setzen. Wiederholtes ``+`` oder ``+=`` in einer Schleife sollte man vermeiden.

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 18:03
von fishtown
Also, das habe ich nun (gefunden hier im Forum und etwas verändert):

Das original:

Code: Alles auswählen

def create_table(name, *columns):
    return "create table %s (%s)" % (name, ", ".join(columns))
Meine Version:

Code: Alles auswählen

def create_table(*columns):
    return "create table dbtest (%s)" % (", ".join(columns))

keywords = ("user_1", "user_2", "user_3", "user_4")
print (create_table(keywords))
Ich habe 'name' weggelassen, da ich diesen fest vergebe.

Funktioniert natürlich nicht....
return "create table dbtest (%s)" % (", ".join(columns))
TypeError: sequence item 0: expected str instance, tuple found

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 18:16
von cofi
Das Problem ist nicht die Funktion, sondern wie du sie aufrufst. Lass dir mal `columns` in der Funktion ausgeben und lies im Tutorial nach, was es mit `*args` auf sich hat.

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 18:16
von /me
Wenn du keywords ohnehin als Tupel definiert hast dann brauchst du den Sternchen-Operator in der Funktionsdefinition nicht.

Einfach noch mal etwas Code:

Code: Alles auswählen

>>> def function(*args, **kwargs):
    print(args)
    print(kwargs)

>>> function('foo', a='bar', b='baz')
('foo',)
{'a': 'bar', 'b': 'baz'}

Re: Variable auslesen und aufsplitten

Verfasst: Mittwoch 13. März 2013, 18:23
von fishtown
Super, danke. Stimmt. Dieser Stern...

Ich danke euch für die Hinweise auf dem weg zum 'Erfolg'. Genauso soll es sein. Vielen Dank.