python qr code zeilenumbruch?
Hallo :)
ich möchte in python in meinen QR-Code einen Zeilenumbruch eingeben, allerdings wenn ich den mit \n eingebe wird iwi kein zeilenumbruch ausgegeben sondern einfach das \n als zeichen.
Hat jm ne Idee?
1 Antwort
Wie erzeugst du denn den QR-Code?
Wenn ich beispielsweise mit Python (Version 3.9.4) und dem qrcode-Modul (Version 7.3.1) den folgenden Code ausführe...
import qrcode
img = qrcode.make('Zeile 1\nZeile 2')
img.save("qrcode.png")
... erhalte ich den folgenden QR-Code...
... der den Text...
Zeile 1
Zeile 2
... als Information enthält.
Das mit dem Zeilenumbruch mit der \n-Escape-Sequenz klappt also bei mir bei diesem Beispiel ohne Probleme.
============
Kann es vielleicht sein, dass du bei sowas nicht beispielsweise den Text...
"Zeile 1\nZeile 2"
Zeile 1
Zeile 2
... sondern beispielsweise sowas wie...
"Zeile 1\\nZeile 2"
Zeile 1\nZeile 2
...vorliegen hast?
Was wird dir angezeigt, wenn du den Text einfach mit der print()-Funktion ausgibst? Wird dir da bei der Ausgabe ein Zeilenumbruch oder ein ausgeschriebenes „\n“ angezeigt?

Das vorangestellte „b“ liegt daran, da es sich nicht um einen String handelt, sondern es sich um ein Bytes-Objekt handelt.
Wenn nichts dagegen spricht, encodiert pyqrcode.create() den String mit ISO 8859-1 (Latin-1), wenn ich das in der Dokumentation des pyqrcode-Moduls richtig gesehen habe. Dementsprechend kann man nun umgekehrt das Bytes-Objekt entsprechend decodieren, um einen String zu erhalten...
decoded_text = b'X\n bla bla bla'.decode('iso-8859-1')
print(decoded_text)
Wenn man sich dann den String ausgeben lässt, wird auch das '\n' entsprechend wieder als Zeilenumbruch ausgegeben, was zuvor bei der Anzeige des Bytes-Objekts noch als '\n' dargestellt worden ist.
Also...
Code:
import pyqrcode
inhalt = "X\n bla bla bla"
url = pyqrcode.create(inhalt, error="Q")
#print(url.png("build/qrcod.png", scale=10))
from pyzbar.pyzbar import decode
from PIL import Image
dec_data = decode(Image.open("build/qrcod.png"))
#print(dec_data[0].data)
dec_text = dec_data[0].data.decode('iso-8859-1')
print(dec_text)
Ausgabe:
X
bla bla bla
hallo danke für die Antwort. Ich erstelle den qr code mit pyqrcode.create("Text \n Text") und beim decoden wird dann ausgegeben Text \n Text anstatt einem Zeilenumbruch
ausgabe: b'X\n bla bla bla'
das ist mein Code. & weißt du vllt. wie Ich das b und die ' wegbekomme?
Dankkkeee