ich bin noch sehr ungeübt mit regulären Ausdrücken. Kann mir jemand spontan sagen, wie ich festellen kann, ob ein String (3 Zeichen lang) Buchstaben von A bis Z außer G und P enthält?
Das wäre suuuuuper nett!
grüße
c

Code: Alles auswählen
import re
text = "ABC"
if re.search(r"^[A-FH-OQ-Z]{3}$",text):
print "ok"
Code: Alles auswählen
import string
def Ersatz():
Vorrat = "abcdefhijklmnoqrstuvwxyz"
dat = file(Name_der_Datei, "r")
text = dat.read()
text = string.lower(text)
for x in text:
if x in Vorrat:
return 1
elif x not in Vorrat:
return 0
else:
print "Text ist leer"
Ersatz()
Kann nicht sein. Großschreibung beachtet?Christina hat geschrieben:text = "APA"
dies sollte sollte eigentlich nicht funktionieren (P soll nicht dabei sein). mein test war aber leider positiv...
Code: Alles auswählen
text = "APA"
result = re.match('[A-FH-OQ-Z]{1,3}$', text);
Damit akzeptierst Du aber auch Zeichenketten, die kürzer als 3 Zeichen sind.Christina hat geschrieben:Code: Alles auswählen
result = re.match('[A-FH-OQ-Z]{1,3}$', text);
Code: Alles auswählen
text = "ABC"
forbidden =["G","P"]
def test(text, lang=3, verboten=forbidden ):
if len(text)==3:
for i in [1,2,3]:
if text[i]in verboten: return "verbotener Buchstabe"
return "richtig"
else: return "falsche Laenge"
print test(text)
Hast Du das getestet? Du greifst mit text[3] hinter den String. Das müsste ein IndexError: string index out of range zur Folge haben. Abgesehen davon erkennt Deine Funktion auch "&%$" als richtig.Kartoffel hat geschrieben:Es scheint sogar zu funktionieren (mein erstes funktionierendes Prog - Juhu)
Code: Alles auswählen
text = "ABC"
if not [0 for ch in text if ch not in "ABCDEFHIJKLMNOQRSTUVWXYZ"]:
print "ok"
Code: Alles auswählen
from string import ascii_uppercase
text = "ABC"
forbidden =["G","P"]
def test(text, lang=3, verboten=forbidden ):
try:
if len(text)==3:
for i in range(0,lang):
if type(text[i]) is not str: raise TypeError
if not text[i] in ascii_uppercase or text[i]in verboten: return "verbotener Buchstabe"
return "richtig"
else: return "falsche Laenge"
except TypeError:
return "falscher Typ"
print test(text)
Code: Alles auswählen
def charcheck(totest):
return len(totest) == 3 and min([x in reduce(lambda x,y: x + chr(y), range(ord("A"), ord("G")) + range(ord("H"), ord("P")) + range(ord("Q"), ord("Z")+ 1), "") for x in totest])
Code: Alles auswählen
f=lambda x:len(x)==3 and 'G' not in x and 'P' not in x
Code: Alles auswählen
from string import *
def such_hasso_such(text):
Vorrat = "abcdefhijklmnoqrstuvwxyz"
text = text.lower()
if len(text) == 3:
for i in text:
if i not in Vorrat:
erg = 1
else:
erg = 0
else:
erg = 0
return erg
Code: Alles auswählen
Python 2.3b1 (#40, Apr 25 2003, 19:06:24) [MSC v.1200 32 bit (Intel)] on win3
Type "help", "copyright", "credits" or "license" for more information.
>>> import sets
>>> sets.Set("ASD").issubset(sets.Set("ABCDEFHIJKLMNOQRSTUVWXYZ"))
True
>>> sets.Set("DFG").issubset(sets.Set("ABCDEFHIJKLMNOQRSTUVWXYZ"))
False
>>>
Gibt es auch erst ab Version 2.3. Eine knappe Beschreibung von Sets gibt's hier:Milan hat geschrieben:hmmm... würde ich mir ja gerne mal näher anschauen, aber es gibt bei mir kein Modul sets. In der offizellen Modulliste auch nicht.