Könnte mir jemand, falls möglich, einen Ansatz geben? Z.B. den Namen einer Funktion mit der das geht. Danke
Testen ob irgendeine sechsstellige Zahl in String vorkommt
Code: Alles auswählen
>>> foo = 'ein string, in dem eine sechstellige zahl vorkommt: 123456 und noch ein paar woerter'
>>> filter(lambda char: char in digits, foo)
'123456'
>>> len(filter(lambda char: char in digits, foo)) == 6
True-
yantur_v_b
- User
- Beiträge: 17
- Registriert: Montag 25. Mai 2009, 10:32
Wenn es wirklich nur darum geht...markus073 hat geschrieben:Ich habe einen String, und möchte gerne herausfinden ob irgendeine sechsstellige Zahl darin vorkommt.
Code: Alles auswählen
if str(sechstellige_zahl) in String_der_Wahl:
print "Zahl kommt im String vor"
else:
print "Zahl kommt im String nicht vor"-
fred.reichbier
- User
- Beiträge: 155
- Registriert: Freitag 29. Dezember 2006, 18:27
derdon, dein Code funtktioniert aber auch für "ein string, in dem eine zweistellige: 12 und eine vierstellige zahl vorkommt: 3456" 
Besten Dank in die Runde für die Tipps.
Habs jetzt so gemacht
"\d" steht ja in RegEx für eine Ziffer.
Habs jetzt so gemacht
Code: Alles auswählen
import re
foo = 'ein string, in dem eine sechstellige zahl vorkommt: 012345 noch ein paar woerter'
if re.search('\d\d\d\d\d\d', foo):
print "ja, kommt drin vor!"- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Und sollte sie öfter aufgerufen werden (Schleife etc.), dann sollte man die Regular Expression kompilieren.
Oder so
:
Code: Alles auswählen
>>> import string
>>> import itertools
>>> any("".join(x) in "ich bin ein string mit 123456 einer sechstelligen zahl" for x in itertools.product(string.digits, repeat=6))
True
>>> any("".join(x) in "ich bin ein string mit 12345 einer sechstelligen zahl" for x in itertools.product(string.digits, repeat=6))
FalseDas Leben ist wie ein Tennisball.
auf die naheliegenste lösung ist mal wieder keiner gekommen:
afaik PEP8 konform 
Code: Alles auswählen
def check_zahl_drin(eingabe):
for zahl in xrange(int(1e6)):
if str(zahl) in eingabe:
return True
Zuletzt geändert von Dill am Mittwoch 10. Juni 2009, 17:57, insgesamt 1-mal geändert.
http://www.kinderpornos.info
Wer den interaktiven Interpreter benutzt darf PEP 8 ignorieren.snafu hat geschrieben:PEP 8, PEP 8!EyDu hat geschrieben:Oder so:
@Dill: denk mal drüber nach: "spam 1234 eggs" und "keine zahl drin"
Das Leben ist wie ein Tennisball.
es kann durchaus vorkommen, dass in einem solch komplexen stück software noch ein, zwei bugs zu finden sind.
dafür gibts ja patch-days.
nach intensiven tests wurde ausserdem festgestellt, dass sich die geschwindigkeit um nahezu exakt 10% verbessert hat. das ist fortschritt.
dafür gibts ja patch-days.
Code: Alles auswählen
def check_sechsstellige_zahl_drin(eingabe):
for zahl in xrange(int(1e5), int(1e6)):
if str(zahl) in eingabe:
return True
Zuletzt geändert von Dill am Mittwoch 10. Juni 2009, 18:31, insgesamt 1-mal geändert.
http://www.kinderpornos.info
ich kann dir nicht folgen. falls du auf deinem standpunkt bestehst muss ich evtl nen externen consultant für ein code-review reinholen...
bei beiden deiner testfälle wird die funktion None zurückgeben.
ist das zu unklar (im kontrast zu dem True)?
stimmt, das ist nicht schön, muss aber nicht gepatched werden. kommt in ver 2.0.
bei beiden deiner testfälle wird die funktion None zurückgeben.
ist das zu unklar (im kontrast zu dem True)?
stimmt, das ist nicht schön, muss aber nicht gepatched werden. kommt in ver 2.0.
http://www.kinderpornos.info
