2016-05-04 4 views
15

Ich bin neu in Python-Programmierung und ich bin ein bisschen verwirrt. Ich versuche, das Bytes aus einer Zeichenfolge zu erhalten Hash und zu verschlüsseln, aber ich habeEntfernen Sie 'b' Zeichen vor einem String-Literal in Python 3

b'...' 

b Zeichen vor Zeichenfolge genau wie das Beispiel unten. Ist das irgendwie zu vermeiden? Kann jemand eine Lösung geben? Sorry für diese dumme Frage

import hashlib 

text = "my secret data" 
pw_bytes = text.encode('utf-8') 
print('print',pw_bytes) 
m = hashlib.md5() 
m.update(pw_bytes) 

OUTPUT:

print b'my secret data' 
+0

http://stackoverflow.com/a/43680634/1236128 –

Antwort

5

Sie erhalten die b weil Sie utf-8 codiert und es ist ein Byte-Objekt. So können Sie nur die Zeichenfolge zuerst drucken, oder ein wenig redundant dekodieren Sie es nach der Codierung, wenn Sie die b nicht sehen wollten, wie dies bezeichnet. Da Sie vor der Aktualisierung verschlüsseln müssen, könnten Sie vor dieser

nur codieren. Auch die Umwandlung in eine str im Voraus ist redundant. Es ist schon eine Zeichenfolge.

+0

warum ist dies die akzeptierte Antwort? Es ist der darunter liegende. Dieser ist zu viel geredet ... Die Antwort von krock ist die Antwort. Und übrigens, str (x) entfernt nicht die b – ifelsemonkey

+0

Erste Antworten ohne Erklärung oder wie Sie es sagen "talk" sind nutzlos. Nur Code-Antworten sind hier verpönt. Zweitens habe ich nicht gesagt, dass str (x) das b entfernt hat. – Pythonista

27

Dies sollte den Trick:

pw_bytes.decode("utf-8") 
+0

danke, Macher. – ifelsemonkey

6

u Go Here

f = open('test.txt','rb+') 
ch=f.read(1) 
ch=str(ch,'utf-8') 
print(ch) 
Verwandte Themen