2017-08-13 2 views
-1

Ich bin neu in Python und ich löse ein Problem. Kann jemand die richtige Bedeutung sagen, ob die folgende Codezeile:Python regulären Ausdruck Verständnis

if collections.Counter(re.findall(r"[\w']+", decrypted))[repeat] >= 2: 
      return decrypted 

entschlüsselt eine lange Reihe ist, und wiederholen Sie ein Wort in dieser Zeichenfolge.

Vielen Dank im Voraus.

Antwort

0

Lassen Sie uns:

01 Dann
decrypted = "foo bar baz" 

re.findall(r"[\w']+", decrypted) 

kehrt list von Teil von decrypted passt die Regel r"[\w']+" oder alle Strings mit Buchstaben, Zahlen oder Apostroph Symbol. Ergebnis ist ['foo', 'bar', 'baz'].

Methode collections.Counter erstellen Sie eine spezielle dict like Objekt aus der Liste. Der Operator [x] dieses Objekts gibt den Wert x in der angegebenen Liste zurück.

Endlich:

collections.Counter(re.findall(r"[\w']+", decrypted))[repeat] 

Erträge zählen von repeat Subleitungen in decrypted.

0

\w entspricht einem beliebigen Wortzeichen (gleich [a-zA-Z0-9_]) Bedeutung alle Buchstaben und Zahl und unterstreicht

+ bedeutet 1 oder mehrere Male (mindestens jedoch 1)

Sie versuchen, findall (global)

online explaination