Python Regex "Objekt hat kein Attribut"

8

Ich habe eine Liste von Seiten zusammengestellt, die wir mit neuen Inhalten aktualisieren müssen (wir wechseln zwischen Medienformaten). In diesem Prozess katalogisiere ich Seiten, die den neuen Inhalt korrekt enthalten.

Hier ist die allgemeine Idee von dem, was ich mache:

  1. Iteriere durch eine Dateistruktur und erhalte eine Liste von Dateien
  2. Für jede Datei, die in einen Puffer gelesen wird, und mit regex search, passen Sie ein bestimmtes Tag
  3. an
  4. Wenn Übereinstimmung besteht, testen Sie 2 weitere Regex-Übereinstimmungen
  5. schreibe die resultierenden Übereinstimmungen (das eine oder andere) in eine Datenbank

Alles funktioniert gut, bis das 3. Regex-Muster übereinstimmt, wo ich folgendes bekomme:

'NoneType' object has no attribute 'group'

%Vor%

Danke.

    
ives 29.09.2009, 08:32
quelle

4 Antworten

17

Ihre Ausnahme bedeutet, dass urla den Wert Keine hat. Da der Wert von urla durch den re.search-Aufruf bestimmt wird, folgt, dass re.search None zurückgibt. Und das passiert, wenn die Zeichenfolge nicht mit dem Muster übereinstimmt.

Also im Grunde sollten Sie verwenden:

%Vor%

anstelle von dem, was Sie jetzt haben.

    
oggy 29.09.2009, 09:13
quelle
2

Ich habe das gleiche Problem.

Mit python2.6 können Sie es auf diese Weise lösen:

%Vor%     
antonjs 17.04.2011 09:06
quelle
2

Der Grund für TypeError ist, dass search oder match normalerweise entweder ein MatchObject oder ein None zurückgibt. Nur einer von diesen hat eine group -Methode. Und es ist kein None . Also müssen Sie tun:

%Vor%

P.S. PEP-8 schlägt vor, 4 Leerzeichen für die Einrückung zu verwenden. Es ist nicht nur eine Meinung, es ist eine gute Übung. Ihr Code ist ziemlich schwer zu lesen.

    
SilentGhost 29.09.2009 09:14
quelle
0

Bitte beachten Sie auch Ihre falsche Annahme, dass der Fehler in der dritten Übereinstimmung war, als sie tatsächlich in der zweiten war. Dies scheint zu der irrigen Annahme geführt zu haben, dass das zweite Match etwas bewirkte, um das dritte Match ungültig zu machen, was Sie von der Strecke abbringen würde.

    
holdenweb 30.09.2009 03:50
quelle

Tags und Links