Seite 1 von 1
Abfrage Zahl oder Buchstabe
Verfasst: Montag 15. Juni 2009, 17:15
von SteeWeeDee
Hallo!
Will eine Abfrage so gestalten, dass es das erste Zeichen überprüft und danach, je nachdem ob es eine (integer) Zahl oder ein Buchstabe ist, verschiedene Zweige einschlägt.
Nur wie macht man so eine Abfrage? Alternativ ginge es ja auch damit, dass man eine Liste erstellt in die Zahlen enthalten sind (zahl = [0,1,2,...] und mit "not in" überprüft - aber muss ja auch einfacher gehen
MfG
Verfasst: Montag 15. Juni 2009, 17:26
von nemomuk
Deine Beschreibung ist etwas zu oberflächlich...
Zeig mal was du bisher dafür auf die Beine gestellt hast oder was genau du machen willst. Für dein Problem gibt es wohl zu viele Lösungswege als dass man diese alle auflisten könnte...
Verfasst: Montag 15. Juni 2009, 17:30
von Dill
Code: Alles auswählen
In [285]: import string
In [286]: if "8foo"[0] in string.digits:
.....: print "digit"
digit
In [287]: if not "foo"[0] in string.digits:
.....: print "no digit"
no digit
Verfasst: Montag 15. Juni 2009, 17:37
von SteeWeeDee
Gut, also genauer:
Ich habe eine Liste die folgendermaßen aussieht:
["Land", IP - Anzahl der Zugriffe]
also so:
["Canada", 4.16.184.37 - 2 Zugriffe, usw]
Nun will ich eine Aufsummierung durchführen, also Land - Gesamtzahl der Zugriffe. Das wollte ich so durchführen:
Pseudocode:
Code: Alles auswählen
gesamtzugriffslist = []
countervariable=0
for line in countrylist:
if (erste Stelle == Buchstabe): # da bräuchte ich jetzt eine Abfrage der Art if line[0] == Buchstabe:
Land = line
gesamtzugriffslist.append(Land, countervariable)
countervariable = 0
else:
countervariable += zugriff
Hoffe jetzt ist mein Problem etwas klarer
Verfasst: Montag 15. Juni 2009, 17:44
von SteeWeeDee
Mit dem Post von dill funktionierts, danke!
Verfasst: Montag 15. Juni 2009, 17:47
von nemomuk
Code: Alles auswählen
countries = {}
for entry in log:
country, ip, access_count = entry
if country in countries:
countries[country] += access_count
else:
countries[country] = access_count
Wenn ich es richtig verstanden habe, dann wäre doch sowas hier schöner, oder?
Verfasst: Montag 15. Juni 2009, 17:50
von Dill
Mit dem Post von dill funktionierts, danke!
Das funktioniert, ist aber nicht schön.
das problem ist dein datenmodell. das mindeste wäre sowas:
[[Land, IP, Zugriffe], [Land, IP, Zugriffe] ...]
wo kommen die daten her?
@schneider, habe das so verstanden, dass die liste flach ist...
Verfasst: Montag 15. Juni 2009, 17:53
von nemomuk
Ich eigentlich auch, bin dann aber auf das hier gestoßen:
und dachte dann doch, dass es sich um eine verschachtelte List handelt.
Verfasst: Montag 15. Juni 2009, 17:55
von Dill
dann wäre sein code aber unsinn.
müsteriöhs, müsteriöhs
Verfasst: Montag 15. Juni 2009, 18:40
von Leonidas
@SchneiderWeisse: Sowas würde man inzwischen mit einem ``defaultdict`` machen, so spart man sich die Unterscheidung ob so ein Key bereits existiert oder nicht.
Verfasst: Montag 15. Juni 2009, 19:30
von nemomuk
@Leonidas: danke für den Hinweis, hatte ich wohl in der Eile vergessen...

Verfasst: Montag 15. Juni 2009, 20:54
von birkenfeld
Statt ``x in string.digits`` würde man ``x.isdigit()`` nehmen. Das funktioniert dann auch für Strings mit mehr als einem Element.