115
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi là người mới trong chương trình Python và tôi hơi bối rối. Tôi cố gắng lấy các byte từ một chuỗi đến băm và mã hóa nhưng tôi đã nhận được
b'...'
B ký tự ở phía trước chuỗi giống như ví dụ dưới đây. Có cách nào tránh được điều này không?. Có thể đưa ra một giải pháp nào không? Xin lỗi vì câu hỏi ngớ ngẩn này
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'
Khi được hỏi ngày 4 tháng 5 năm 2016 lúc 1:27May 4, 2016 at 1:27
1
Cái này cần phải dùng mẹo:
pw_bytes.decode["utf-8"]
Đã trả lời ngày 4 tháng 5 năm 2016 lúc 1:33May 4, 2016 at 1:33
Krockkrockkrock
28.3K12 Huy hiệu vàng76 Huy hiệu bạc84 Huy hiệu đồng12 gold badges76 silver badges84 bronze badges
7
Đây bạn đi
f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
Đã trả lời ngày 17 tháng 2 năm 2017 lúc 16:57Feb 17, 2017 at 16:57
3
Giải mã là dư thừa
Bạn chỉ có "lỗi" này ngay từ đầu, vì sự hiểu lầm về những gì đang xảy ra.
Bạn nhận được
1 vì bạn đã mã hóa thành import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
2 và bây giờ đó là một đối tượng byte.import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
>> type["text".encode["utf-8"]]
>>
Fixes:
- Bạn chỉ có thể in chuỗi đầu tiên
- Giải mã nó một cách dư thừa sau khi mã hóa
Robert Harvey
175K46 Huy hiệu vàng330 Huy hiệu bạc491 Huy hiệu Đồng46 gold badges330 silver badges491 bronze badges
Đã trả lời ngày 4 tháng 5 năm 2016 lúc 1:31May 4, 2016 at 1:31
PythonistaccothonistaPythonista
11.3k2 Huy hiệu vàng30 Huy hiệu bạc49 Huy hiệu đồng2 gold badges30 silver badges49 bronze badges
5
Bạn có thể thử một trong các cách tiếp cận sau để loại bỏ B 'khỏi chuỗi byte. Kết quả là, bạn sẽ nhận được một chuỗi.
Cách tiếp cận 1: Sử dụng hàm Decode [] Using decode[] function
>>> t = Subprocess.check_output ['ls', shell = true] >>> tb'compress.py \ n '>>> b = t.decode [' utf-8 '] >>> b'compress. py \ n '
>>> t
b'compress.py\n'
>>> b=t.decode['utf-8']
>>> b
'compress.py\n'
Cách tiếp cận 2: Sử dụng hàm str [] Using str[] function
>>> t = Subprocess.check_output ['ls', shell = true] >>> tb'compress.py \ n '>>> a = str [t,' utf-8 '] >>> a'compress. py \ n '
>>> t
b'compress.py\n'
>>> a=str[t,'utf-8']
>>> a
'compress.py\n'
Xóa tiền tố 'B' khỏi chuỗi trong Python #
Sử dụng phương thức
3 để xóa tiền tố import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
1 khỏi đối tượng byte bằng cách chuyển đổi nó thành một chuỗi. Phương thức import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
5 sẽ trả về một chuỗi được giải mã từ đối tượng byte đã cho và sẽ xóa tiền tố import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
1.import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
Copied!
my_bytes = 'bobbyhadz.com'.encode['utf-8'] print[my_bytes] # 👉️ b'bobbyhadz.com' print[type[my_bytes]] # 👉️ string = my_bytes.decode['utf-8'] print[string] # 👉️ bobbyhadz.com print[type[string]] # 👉️
Các đối tượng byte luôn được tiền tố với
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
7, vì vậy để xóa tiền tố, chúng ta phải chuyển đổi byte thành một chuỗi.Phương thức byte.decode trả về một chuỗi được giải mã từ các byte đã cho. Mã hóa mặc định là
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
2.Ngược lại, phương thức str.encode trả về một phiên bản được mã hóa của chuỗi dưới dạng đối tượng byte. Mã hóa mặc định là
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
2.Copied!
my_bytes = 'bobbyhadz.com'.encode['utf-8'] print[my_bytes] # 👉️ b'bobbyhadz.com' string = my_bytes.decode['utf-8'] print[string] # 👉️ bobbyhadz.com
Mã hóa là quá trình chuyển đổi
0 thành đối tượng print b'my secret data'
1 và giải mã là quá trình chuyển đổi đối tượng print b'my secret data'
1 thành print b'my secret data'
0. print b'my secret data'
Nói cách khác, bạn có thể sử dụng phương pháp
print b'my secret data'
4 để đi từ print b'my secret data'
5 đến print b'my secret data'
1 và import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
3 để đi từ print b'my secret data'
1 đến print b'my secret data'
5.Ngoài ra, bạn có thể sử dụng lớp
pw_bytes.decode["utf-8"]
0.Xóa tiền tố 'B' khỏi chuỗi bằng cách sử dụng str [] #
Sử dụng lớp
0 để xóa tiền tố pw_bytes.decode["utf-8"]
1 khỏi đối tượng byte, ví dụ: import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
3. Lớp pw_bytes.decode["utf-8"]
0 sẽ xóa tiền tố pw_bytes.decode["utf-8"]
1 bằng cách chuyển đổi đối tượng byte thành một chuỗi.import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
Copied!
my_bytes = bytes['bobbyhadz.com', encoding='utf-8'] print[my_bytes] # 👉️ b'bobbyhadz.com' print[type[my_bytes]] # 👉️ string = str[my_bytes, encoding='utf-8'] print[string] # 👉️ bobbyhadz.com print[type[string]] # 👉️
Lớp STR trả về một phiên bản chuỗi của đối tượng đã cho. Nếu một đối tượng không được cung cấp, lớp sẽ trả về một chuỗi trống.
Cú pháp để sử dụng lớp byte là như nhau. Lớp trả về một đối tượng byte, vì vậy tiền tố
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
1 được thêm vào.Chúng tôi đã sử dụng mã hóa
2 trong các ví dụ. Mã hóa import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
2 có khả năng mã hóa hơn một triệu điểm mã ký tự hợp lệ trong Unicode.import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
Bạn có thể xem tất cả các mã hóa tiêu chuẩn trong bảng này của các tài liệu chính thức.
Một số mã hóa phổ biến là
pw_bytes.decode["utf-8"]
9, f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
0 và f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
1.Khi giải mã đối tượng byte, chúng ta phải sử dụng cùng một mã hóa được sử dụng để mã hóa chuỗi thành đối tượng byte.
Nếu vì một lý do nào đó, bạn cần xóa tiền tố
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
1 theo cách hacky, hãy thử sử dụng hàm f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
3 với việc cắt chuỗi.Copied!
my_bytes = bytes['bobbyhadz.com', encoding='utf-8'] print[my_bytes] # 👉️ b'bobbyhadz.com' string = repr[my_bytes][2:-1] print[string] # 👉️ bobbyhadz.com
Hàm repr [] trả về biểu diễn chuỗi chính tắc của đối tượng.
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
0Khi chúng ta có đối tượng byte được chuyển đổi thành một chuỗi, chúng ta có thể sử dụng cắt chuỗi để loại bỏ tiền tố
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
1.Cú pháp để cắt chuỗi là
f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
5.Chỉ số
6 bao gồm, trong khi chỉ số f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
7 là độc quyền [lên đến, nhưng không bao gồm].f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
Các chỉ mục Python là dựa trên 0, do đó, ký tự đầu tiên trong một chuỗi có chỉ số
f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
8 và ký tự cuối cùng có chỉ số là f = open['test.txt','rb+']
ch=f.read[1]
ch=str[ch,'utf-8']
print[ch]
9 hoặc >> type["text".encode["utf-8"]]
>>
0.Slice
>> type["text".encode["utf-8"]]
>>
1 bắt đầu tại Index >> type["text".encode["utf-8"]]
>>
2 và đi lên, nhưng không bao gồm ký tự cuối cùng trong chuỗi.Về cơ bản, chúng tôi loại trừ ký tự
import hashlib
text = "my secret data"
pw_bytes = text.encode['utf-8']
print['print',pw_bytes]
m = hashlib.md5[]
m.update[pw_bytes]
1 và các trích dẫn.