Python Variable hochzählen

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
AssElAss
User
Beiträge: 3
Registriert: Donnerstag 9. Juli 2015, 16:40

Hallo zusammen,

wie zählt man in Python eine Variable hoch?
Ausgangspunkt: Textfile mit einem in dem gleiche Wörter vorkommen, gleichen soll einfach nur aufsteigend eine Zahl angehangen werden

Code: Alles auswählen

import fileinput
import time

wert = 1
wert=str(wert)
for line in fileinput.FileInput("D:/test/ueber.txt", inplace=1):

line=line.replace("ZWEDAT","ZWEDAT_" + wert)
print line 
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Es gibt verschiedene Möglichkeiten. Man kann den Wertebereich mittels `range(dein_maximum + 1)` beziehen. Man kann `itertools.count()` verwenden. Oder man schreibt `wert += 1`.

Ein Beispiel:

Code: Alles auswählen

template = 'FOOBAR_{}'
for i in range(10):
    print(template.format(i))
AssElAss
User
Beiträge: 3
Registriert: Donnerstag 9. Juli 2015, 16:40

Leider bin ich ein absoluter Newbie in Sachen Python.

Ausgangsfile sieht so aus : ZWEDAT;BETRAG;KJUOIOI;DHIUID;ZWEDAT;BETRAG;KJUOIOI;DHIUID;ZWEDAT;BETRAG;KJUOIOI;DHIUID;ZWEDAT;BETRAG;KJUOIOI;DHIUID;ZWEDAT

Soll nachher wieder in einer Zeile ausgegeben werden, am besten direkt ins Textfile

Und zwar so : ZWEDAT_1;BETRAG;KJUOIOI;DHIUID;ZWEDAT_2;BETRAG;KJUOIOI;DHIUID;ZWEDAT_3;BETRAG;KJUOIOI;DHIUID;ZWEDAT_4;BETRAG;KJUOIOI;DHIUID;ZWEDAT_5
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Das könnte man zum Beispiel so lösen:

Code: Alles auswählen

import itertools
import re

def add_counts(s, pattern, start=1):
    counter = itertools.count(start)
    template = '{match}_{count}'

    def replacer(m):
        return template.format(
            match=m.group(), count=next(counter)
        )

    return re.sub(pattern, replacer, s)

def run_test():
    test_data = (
        'ZWEDAT;BETRAG;KJUOIOI;DHIUID;'
        'ZWEDAT;BETRAG;KJUOIOI;DHIUID;'
        'ZWEDAT;BETRAG;KJUOIOI;DHIUID;'
        'ZWEDAT;BETRAG;KJUOIOI;DHIUID;ZWEDAT'
    )
    print(add_counts(test_data, 'ZWEDAT'))


if __name__ == '__main__':
    run_test()
Viel Spaß beim Durchgehen des Codes. Du wirst sicherlich ein paar Fragen haben. Versuche dir möglichst viele Antworten selbst zu erarbeiten. Nutze dafür zum Beispiel die Python-Dokumentation. Wenn es gar nicht mehr weiter geht, dann stell deine Frage gern hier im Forum. :)
AssElAss
User
Beiträge: 3
Registriert: Donnerstag 9. Juli 2015, 16:40

Super vielen Dank, das funktioniert auch wunderbar, schreibe das Ganze nun in eine Datei.

kann man den Source-Code soweit erweitern, dass wenn merere gleiche Wörter vorkommen, all dieses nummeriert werden?
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ja, kann man.
Antworten