2016-05-04 10 views
15

Jestem nowy w programowaniu Pythona i jestem nieco zdezorientowany. Próbuję pobrać bajty z ciągu znaków do hasza i zaszyfrować, ale otrzymałem znak b z przodu łańcucha, tak jak w poniższym przykładzie. Czy można tego uniknąć? Czy ktoś może dać rozwiązanie? Niestety do tego głupie pytanieUsuń znak "b" przed literał ciągu w Pythonie 3

import hashlib 

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

WYJŚCIE:

print b'my secret data' 
+0

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

Odpowiedz

5

Otrzymasz b bo zakodowany do utf-8 i jest to obiekt bajtów. Tak więc, możesz najpierw wydrukować tylko ciąg lub nieco zbędny dekodować go po kodowaniu, jeśli nie chcesz, aby b oznaczało to jako takie. Ponieważ przed aktualizacją trzeba kodować, przypuszczam, że można po prostu kodować przed tą konwersją. Przed konwersją na wcześniejszą str jest zbędna. To już jest ciąg znaków.

+0

dlaczego jest to przyjętą odpowiedź? To jest ten poniżej. Ten jest za dużo gadania ... Odpowiedzią jest odpowiedź przedstawiona poniżej przez Krocka. A tak na marginesie, str (x) nie usuwa b – ifelsemonkey

+0

Pierwsze odpowiedzi bez żadnego wyjaśnienia lub gdy mówisz "mów" są bezużyteczne. Odpowiedzi tylko na kod są tu mile widziane. Po drugie, nie powiedziałem, że str (x) usunął b. – Pythonista

27

To powinno załatwić sprawę:

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

dziękuję, wykonawca. – ifelsemonkey

6

Tu u go

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