2016-08-01 6 views
0
import re 

b=re.findall('[A-Z]+[a-z]+[A-Z]',k) 

for i in b: 
    print (i) 

Ich habe diesen Code geschrieben. Die Zeichenfolge in k ist zu lang, um hier zu drucken. Ich muss alle Sätze von Sub-Strings finden, wo die mittlere später in Kleinbuchstaben und drei Buchstaben genau auf jeder Seite Großbuchstaben ist. Ich denke, dieser Code sollte funktionieren. Aber es druckt eine zufällige Anzahl von Buchstaben in jeder Teilkette. Was ist das Problem in meinem Code oder wie kann ich es beheben? Bitte helfen!Python Challenge - # 3: es druckt zufällige Buchstaben anstelle von 7

+1

Nun, gerade prüfen Sie nur, ob ein Buchstabe auf jeder Seite Großbuchstaben ist, nicht 3. –

+0

Nun eigentlich eine beliebige Anzahl von Buchstaben> 1 auf der linken Seite, und 1 Buchstabe auf der rechten Seite. – James

Antwort

0

Ihr regexp sollte + nicht enthalten, das mit 1 oder mehreren Großbuchstaben übereinstimmt. Wenn Sie so etwas wie AAAbCCC bekommen müssen nur versuchen:

b=re.findall('[A-Z]{3}[a-z][A-Z]{3}',k) 
+0

Vielen Dank. Es ist nicht der vollständige Code. Aber es hat mich auf den richtigen Weg gebracht –

0

Sie können Wiederholungen eines Atom/Bereich/Gruppe angeben mit {n} wobei n eine ganze Zahl ist.

würde ich Ihre regexp zu [A-Z]{3}[a-z]+[A-Z]{3}, oder besser ändern, wenn die mittlere Teilkette nur ein Buchstabe sein muss, die + entfernen, weil die 1 oder mehr Kleinbuchstabe passen würde: [A-Z]{3}[a-z][A-Z]{3}.

+0

Vielen Dank. Es half. –

Verwandte Themen