Abfrage Zahl oder Buchstabe

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
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

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
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

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...
Zuletzt geändert von nemomuk am Montag 15. Juni 2009, 17:32, insgesamt 1-mal geändert.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

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
http://www.kinderpornos.info
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

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
SteeWeeDee
User
Beiträge: 34
Registriert: Donnerstag 18. September 2008, 14:10

Mit dem Post von dill funktionierts, danke!
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

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?
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

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...
http://www.kinderpornos.info
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Ich eigentlich auch, bin dann aber auf das hier gestoßen:

Code: Alles auswählen

for line in countrylist:
und dachte dann doch, dass es sich um eine verschachtelte List handelt.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

dann wäre sein code aber unsinn.

müsteriöhs, müsteriöhs
http://www.kinderpornos.info
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

@SchneiderWeisse: Sowas würde man inzwischen mit einem ``defaultdict`` machen, so spart man sich die Unterscheidung ob so ein Key bereits existiert oder nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

@Leonidas: danke für den Hinweis, hatte ich wohl in der Eile vergessen...;)
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Statt ``x in string.digits`` würde man ``x.isdigit()`` nehmen. Das funktioniert dann auch für Strings mit mehr als einem Element.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten