Python-String in Bytes

Sie mussen der Bibliothek re eine Zeichenfolge bereitstellen, wenn Sie ein Objekt mit einem Zeichenfolgenmuster bearbeiten m√∂chten. Wenn Sie versuchen, ein Zeichenfolgenmuster fur ein Objekt zu verwenden, das mit den "Bytes‚" Datentyps, werden Sie auf "TypeError: kein Zeichenfolgenmuster fur ein byte√§hnliches Objekt verwenden‚" error.

In diesem Leitfaden erfahren Sie, was dieser Fehler bedeutet und warum er auftreten kann. Wir fuhren Sie durch ein Beispiel fur diesen Fehler, damit Sie sehen können, welche Schritte Sie unternehmen mussen, um den Fehler zu beheben.

TypeError: Kann kein Zeichenfolgenmuster fur ein Byte-ähnliches Objekt verwenden

Bytes-Objekte enthalten eine Folge einzelner Bytes. Sie sind wie Strings unver√§nderlich, was bedeutet, dass sie nicht ge√§ndert werden k√∂nnen. Ein bytes-Objekt wird normalerweise zuruckgegeben, wenn Sie eine Bin√§rdatei lesen oder eine Bibliothek wie "request‚" um Daten von einer Website abzurufen.

Wenn Sie die re-Bibliothek verwenden, mussen Sie entweder mit Bytes oder Objekten arbeiten. Sie können keine Zeichenfolgenmuster fur ein Byte-Objekt angeben und umgekehrt.

Wenn Sie mit Byte-Daten arbeiten, muss Ihr Programm ein Regex-Muster in Byte angeben. Wenn Sie Regex mit Strings verwenden, stellen Sie ein string-basiertes Regex-Muster bereit.

Ein Beispielszenario

Wir werden ein Programm schreiben, das den Titel einer Webseite abruft. Fur dieses Tutorial arbeiten wir mit der Python.Engineering-Website.

Zu Beginn lassen Sie uns die beiden benötigten Bibliotheken importieren um unser Programm zu erstellen: urllib und re.

Die urllib-Bibliothek ermöglicht es uns, Webanfragen zu stellen und die re-Bibliothek gibt uns die Möglichkeit, Regex in unserem Programm zu verwenden.

81 % der Teilnehmer gaben an, dass sie sich nach dem Besuch eines Bootcamps hinsichtlich ihrer Berufsaussichten im Tech-Bereich sicherer fuhlten. Lassen Sie sich noch heute in ein Bootcamp einweisen.

Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.

Als nächstes machen wir einen < eine href="/what-is-http/">Webanfrage an die Python.Engineering-Homepage:

Das Programm ruft den Inhalt von die Karriere-Karma-Homepage. Diese Daten werden mit der Methode read() gelesen, die Teil der Methode urlopen() ist. Wir speichern diese Daten im "res‚" variable.

Da wir nun die Daten aus unserem Programm haben, verwenden Sie die Methode search(), um den Inhalt des -Tags auf der abgefragten Webseite herauszufinden -Tag enth√§lt den Titel einer Webseite.<br></p> <p>Um den Titel der Webseite zu finden, verwenden Sie die Methode <code>re.search()</code>:<br></p> <p>Unser Programm sucht nach dem Inhalt des <title>-Tags. Unser Programm gibt dann den Titel der Webseite an die Konsole aus. Wir verwenden die <a href="/de_de-python-f-string/">.format()-Methode</a>, um diesen Titel in unseren String einzufugen. <br></p> <p>Lassen Sie unser Programm ausfuhren und sehen Sie, ob es funktioniert:<br></p> <p>Unser Programm wird nicht vollst√§ndig ausgefuhrt.</p><p>Der Wert von "home‚" (die Antwort von unserer Webseite) ist ein Bytes-Objekt, aber das Muster, das wir verwenden, um den Titel einer Webseite zu finden, ist ein String. Dies fuhrt zu einem Fehler, da wir Zeichenfolgenmuster nicht mit Byte-Objekten abgleichen k√∂nnen.<br></p> <p>Es gibt zwei M√∂glichkeiten, dieses Problem zu l√∂sen.</p> <h3>L√∂sung Nr. 1: Zeichenfolgenmuster in Bytes konvertieren ;</h3> <p>Wir mussen das von uns verwendete String-Muster in ein bytes-Objekt umwandeln. Wir k√∂nnen dies entweder mit dem "b‚" Schlusselwort oder die Methode <code>bytes()</code>:<br></p> <p>Die erste Methode zur Verwendung des "b‚" Das Schlusselwort ist h√§ufiger, weil es leichter zu lesen ist. Nachdem wir unser Zeichenfolgenmuster in Bytes umgewandelt haben, k√∂nnen wir unseren Code ausfuhren:<br></p> <p>Unser Code gibt den Text zuruck, der unserer Abfrage entspricht.<br> </p> </a></div><p>Da wir nun die Regex-Antwort haben, k√∂nnen wir sie so parsen, dass sie in unserem Code nur als String erscheint. Regex-Daten zu parsen ist nicht Gegenstand dieses Tutorials. </p> <h3>L√∂sung Nr. 2: Webseitendaten decodieren</h3> <p>Alternativ k√∂nnten wir unsere Webseitendaten decodieren, um daraus eine Zeichenfolge zu machen. Dies ist nutzlich, wenn Sie eine Zeichenfolge fur andere Teile erwarten Ihres Codes funktionieren.<br></p> <p>Wir k√∂nnen unsere Webseitendaten decodieren, indem wir die Codezeile √§ndern, in der wir die Webseite √∂ffnen:<br></p> <p>Dieser Code dekodiert die Antwort unserer Webanfrage, sodass wir die Antwort wie eine Zeichenfolge behandeln k√∂nnen. Sie sollten "utf-8‚" durch die Methode von e . ersetzen ncodieren der Webseite, die Sie anfordern.<br></p> <p>Wir k√∂nnen dann ein Zeichenfolgenmuster verwenden, um nach dem Title-Tag zu suchen. Es ist nicht erforderlich, unser Muster in ein Byte-Objekt zu konvertieren, da "home‚" wird ein Zeichenfolgenwert.</p> <p>Lassen Sie unseren Code ausfuhren und sehen was passiert: <br></p><p>"Karma-Karma trat in mein Leben ein, als ich es am dringendsten brauchte und half mir schnell, ein Bootcamp zu absolvieren. Zwei Monate nach meinem Abschluss fand ich meinen Traumjob, der meinen Werten entsprach und Ziele im Leben!"</p> <p class="testimonial-section-faint-1">Venus, Software Engineer bei Rockbot</p> <p>Der "TypeError: kann kein Zeichenfolgenmuster fur ein Byte verwenden -√§hnliches Objekt‚" Fehler wird ausgel√∂st, wenn Sie versuchen, ein Zeichenfolgenmuster mit einem Objekt abzugleichen, das mit dem Datentyp bytes gespeichert ist.<br></p> <p>Sie k√∂nnen diesen Fehler beheben, indem Sie entweder Ihr Zeichenfolgenmuster in ein Byte-Objekt konvertieren oder indem Sie die Daten, mit denen Sie arbeiten, in ein String-Objekt konvertieren.<br></p> </a></div><p>Jetzt sind Sie bereit, diesen <a href="/de_de-how-long-to-learn-python/">Python-Fehler wie ein Profi zu beheben</a> !</p>