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.
Variable auslesen und aufsplitten
-
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?
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?
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.
Mit den Informationen kann man dir sicher besser helfen.
Das Leben ist wie ein Tennisball.
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,...)
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,...)
-
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.
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?
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?
-
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.
Also, das habe ich nun (gefunden hier im Forum und etwas verändert):
Das original:
Meine Version:
Ich habe 'name' weggelassen, da ich diesen fest vergebe.
Funktioniert natürlich nicht....
Das original:
Code: Alles auswählen
def create_table(name, *columns):
return "create table %s (%s)" % (name, ", ".join(columns))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))Funktioniert natürlich nicht....
return "create table dbtest (%s)" % (", ".join(columns))
TypeError: sequence item 0: expected str instance, tuple found
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
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.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Wenn du keywords ohnehin als Tupel definiert hast dann brauchst du den Sternchen-Operator in der Funktionsdefinition nicht.
Einfach noch mal etwas Code:
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'}