Lösen Sie AttributeError: 'Nonetype'-Objekt hat kein Attribut 'Group' in Python

Fariba Laiq 21 Juni 2023
  1. Ursache von AttributeError: 'NoneType' object has no attribute 'group' in Python
  2. Verwenden Sie try-except, um AttributeError: 'NoneType' object has no attribute 'group' in Python zu lösen
  3. Verwenden Sie if-else, um AttributeError: 'NoneType' object has no attribute 'group' in Python zu lösen
Lösen Sie AttributeError: 'Nonetype'-Objekt hat kein Attribut 'Group' in Python

Reguläre Python-Ausdrücke (Regex) finden und extrahieren eine Reihe von Sonderzeichen oder Mustern. In Python entsteht der Regex AttributeError: 'NoneType' object has no attribute 'group', wenn unser regulärer Ausdruck nicht mit dem angegebenen String übereinstimmt.

In diesem Artikel werden wir uns mögliche Lösungen für diese Art von Fehler ansehen.

Ursache von AttributeError: 'NoneType' object has no attribute 'group' in Python

Wann immer wir eine Klasse oder einen Datentyp definieren, haben wir Zugriff auf die Attribute, die dieser Klasse zugeordnet sind. Angenommen, wir greifen auf die Attribute oder Eigenschaften eines Objekts zu, das die von uns definierte Klasse nicht besitzt.

In diesem Fall stoßen wir auf den AttributeError, der besagt, dass das Objekt 'NoneType' kein Attribut 'Gruppe' hat. Der NoneType bezieht sich auf das Objekt, das den None-Wert enthält.

Diese Art von Fehler tritt auch auf, wenn wir eine Variable anfänglich auf none setzen. Das folgende Programm dient der Suche nach dem großen F am Anfang eines Wortes.

Beispielcode:

# Python 3.x
import re

a = "programmig is Fun"
for i in a.split():
    b = re.match(r"\bF\w+", i)
    print(b.group())

Ausgang:

#Python 3.x
AttributeError                            Traceback (most recent call last)
C:\Users\LAIQSH~1\AppData\Local\Temp/ipykernel_2368/987386650.py in <module>
      3 for i in a.split():
      4     b=re.match(r"\bF\w+", i)
----> 5     print(b.group())

AttributeError: 'NoneType' object has no attribute 'group'

Dieser Fehler wird ausgelöst, weil der reguläre Ausdruck bei der ersten Iteration nicht mit dem angegebenen Buchstaben in der Zeichenfolge übereinstimmen kann. Wenn wir also auf group() zugreifen, zeigt der Compiler einen AttributeError an, weil es zum Objekt vom Typ None gehört.

Verwenden Sie try-except, um AttributeError: 'NoneType' object has no attribute 'group' in Python zu lösen

Eine Methode zur Beseitigung dieses Fehlers ist die Ausnahmebehandlung in Ihrem Code. Auf diese Weise behandelt der Block außer den Fehler.

Betrachten Sie nun das vorherige Programm, und wir werden den try-except-Block wie folgt hinzufügen.

Beispielcode:

# Python 3.x
import re

a = "programmig is Fun"
for i in a.split():
    b = re.match(r"\bF\w+", i)
    try:
        print(b.group())
    except AttributeError:
        continue

Ausgang:

#Python 3.x
Fun

Jetzt sehen wir, dass unser Programm gut funktioniert. Das Schlüsselwort continue wird hier verwendet, um zu überspringen, wo b keine zurückgibt, zur nächsten Iteration springt und nach einem Wort sucht, das mit F beginnt.

Daher wird der Begriff Fun in der Ausgabe gedruckt.

Verwenden Sie if-else, um AttributeError: 'NoneType' object has no attribute 'group' in Python zu lösen

Eine weitere einfache Lösung zur Vermeidung des Fehlers 'NoneType'-Objekt hat kein Attribut 'Gruppe' ist die Verwendung der if-else-Anweisung in Ihrem Programm. Das folgende Programm überprüft die Zahlen in der Zeichenfolge von 1 bis 5.

Da keine Zahl zum regulären Ausdruck passt, führt dies zu einem AttributeError. Aber mit dem if-else-Block können wir den Fehler umgehen.

Wenn die Bedingung nicht erfüllt ist, wird die Anweisung im else-Block ausgeführt, wenn keine Übereinstimmungen gefunden werden.

# Python 3.x
import re

a = "foo bar 678 baz"
x = r".* ([1-5]+) .*"
matches = re.match(x, a)
if matches:
    print(matches.group(1))
else:
    print("No matches!")

Ausgang:

#Python 3.x
No matches!
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

Verwandter Artikel - Python Error