Automatische durchnummerierung von X Einträgen

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
NicNac
User
Beiträge: 19
Registriert: Sonntag 17. Juni 2012, 12:14

Hallo

Ich hab gerade mal wieder einen Hänger und deshalb frage ich euch. In meinem PyScript werden durch Usereingaben jeweils in 2 Datein Username und ein Passwort gespeichert beide getrennt. Nun hat mein Menü einen Punkt der lautet "Auflistung aller Einträge"

Wie bekomme ich es nun hin das er mir alle durchnummeriert anzeigt? Also das Anzeigen ist ja kein problem mittels einer for schleife
Aber irgendwie haut es nich hin das er 1,2,3,4,5 ect. Zumal die Einträge ja Variable sind oder fortlaufend wie auch immer.

Hoffe ihr habt den richtigen Tipp für mich
Liebe Grüße
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

enumerate ist in diesem Fall dein Freund. Ich hoffe aber, dass du nicht wirklich die Kennwörter als Klartext irgendwo in eine Datei gepackt hast.
Das Leben ist wie ein Tennisball.
NicNac
User
Beiträge: 19
Registriert: Sonntag 17. Juni 2012, 12:14

Nein diese sind Verschlüsselt ;) Danke für den perfekten Hinweis das hab ich gesucht
NicNac
User
Beiträge: 19
Registriert: Sonntag 17. Juni 2012, 12:14

Hm moment mit "enumerate" gibt er aber lediglich den Speicherplatz aus.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Was meinst du mit Speicherplatz?

So ein Code ist gemeint:

Code: Alles auswählen

for i, user in enumerate(users, 1):
    ...
Wenn du aber mehrere haben willst ist `itertools.count` evtl schoener:

Code: Alles auswählen

for i, user, password in itertools.izip(itertools.count(1), users, passwords):
    ...
NicNac
User
Beiträge: 19
Registriert: Sonntag 17. Juni 2012, 12:14

Danke ja ich hatte ein Fehler in der Auführung, jetzt klappts wunderbar
Super ;) nur noch eine Frage dazu

Die Einträge in meiner Datei sind untereinander daher gibt er mir diese mit einem \n
hinten dran aus kann man das irgendwie entfernen? Sieht einfach nicht schön aus
BlackJack

@NicNac: Klar kann man die entfernen. Das ist eine Grundoperation auf einem Grunddatentyp — sollte also in jedem anständigen Anfängertutorial vorkommen. :-)
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Um Zeilenenden beim Lesen aus einer Datei loszuwerden, fallen mir zwei Möglichkeiten ein:

Code: Alles auswählen

import os

def getlines1(filename):
    with open(filename) as outfile:
        # liest Dateiinhalt komplett ein und splittet den String
        return outfile.read().splitlines()

def getlines2(filename):
    with open(filename) as outfile:
        for line in outfile:
            # speicherschonender, weil immer nur eine Zeile verarbeitet wird
            yield line.rstrip(os.linesep)
Wenn die Datei nicht allzu groß ist, dann würde ich dir zur Vorgehensweise in `getlines1()` raten. Dürfte insbesondere für einen Anfänger auch leichter zu verstehen sein als die zweite Variante. ;)
Antworten