Seite 1 von 1

Python Variable hochzählen

Verfasst: Donnerstag 9. Juli 2015, 16:42
von AssElAss
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 

Re: Python Variable hochzählen

Verfasst: Donnerstag 9. Juli 2015, 16:46
von snafu
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))

Re: Python Variable hochzählen

Verfasst: Donnerstag 9. Juli 2015, 21:49
von AssElAss
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

Re: Python Variable hochzählen

Verfasst: Donnerstag 9. Juli 2015, 22:31
von snafu
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. :)

Re: Python Variable hochzählen

Verfasst: Freitag 10. Juli 2015, 10:09
von AssElAss
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?

Re: Python Variable hochzählen

Verfasst: Freitag 10. Juli 2015, 15:25
von snafu
Ja, kann man.