Hướng dẫn what is b in python output? - b trong đầu ra python là gì?

Python 3.x tạo ra sự khác biệt rõ ràng giữa các loại:

  • str = '...' nghĩa đen = một chuỗi các ký tự Unicode (Latin-1, UCS-2 hoặc UCS-4, tùy thuộc vào ký tự rộng nhất trong chuỗi)
  • bytes =
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    0 nghĩa đen = một chuỗi octet (số nguyên từ 0 đến 255)

Nếu bạn quen thuộc với:

  • Java hoặc C#, nghĩ về str
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    2 và bytes
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    4;
  • SQL, nghĩ về str
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    6 và bytes
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    8 hoặc
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    9;
  • Windows Registry, nghĩ về str
    >>> '\uFEFF'.encode('UTF-8')
    b'\xef\xbb\xbf'
    
    1 và bytes
    >>> '\uFEFF'.encode('UTF-8')
    b'\xef\xbb\xbf'
    
    3.

Nếu bạn quen thuộc với C (++), thì hãy quên mọi thứ bạn đã học về

>>> '\uFEFF'.encode('UTF-8')
b'\xef\xbb\xbf'
4 và chuỗi, bởi vì một nhân vật không phải là một byte. Ý tưởng đó đã lỗi thời.a character is not a byte. That idea is long obsolete.

Bạn sử dụng str khi bạn muốn đại diện cho văn bản.

print('שלום עולם')

Bạn sử dụng bytes khi bạn muốn biểu diễn dữ liệu nhị phân cấp thấp như các cấu trúc.

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]

Bạn có thể mã hóa một đối tượng str thành một đối tượng bytes.

>>> '\uFEFF'.encode('UTF-8')
b'\xef\xbb\xbf'

Và bạn có thể giải mã A bytes thành str.

>>> b'\xE2\x82\xAC'.decode('UTF-8')
'€'

Nhưng bạn không thể tự do trộn hai loại.

>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str

Ký hiệu

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
0 có phần khó hiểu ở chỗ nó cho phép các byte 0x01-0x7f được chỉ định với các ký tự ASCII thay vì số HEX.

>>> b'A' == b'\x41'
True

Nhưng tôi phải nhấn mạnh, một nhân vật không phải là một byte.a character is not a byte.

>>> 'A' == b'A'
False

Trong Python 2.x

Các phiên bản Pre-3.0 của Python thiếu loại khác biệt giữa dữ liệu văn bản và nhị phân. Thay vào đó, có:

  • >>> b'\xE2\x82\xAC'.decode('UTF-8')
    '€'
    
    2 =
    >>> b'\xE2\x82\xAC'.decode('UTF-8')
    '€'
    
    3 LIÊN QUAN = Trình tự các ký tự unicode = 3.x str
  • str = '...' nghĩa đen = chuỗi các byte/ký tự bị nhiễu
    • Thông thường văn bản, được mã hóa trong một số mã hóa không xác định.
    • Nhưng cũng được sử dụng để đại diện cho dữ liệu nhị phân như đầu ra
      >>> b'\xE2\x82\xAC'.decode('UTF-8')
      '€'
      
      7.

Để giảm bớt quá trình chuyển đổi 2.x sang-3.x, cú pháp theo nghĩa đen ____1010 đã được đưa vào Python 2.6, để cho phép phân biệt các chuỗi nhị phân (phải là ____99 trong 3.x) với các chuỗi văn bản (nên được str trong 3.x). Tiền tố

>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str
1 không có gì trong 2.x, nhưng cho biết tập lệnh
>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str
2 không chuyển đổi nó thành chuỗi unicode trong 3.x.

Vì vậy, có, các chữ

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
0 trong Python có cùng mục đích mà họ làm trong PHP.

Ngoài ra, chỉ vì tò mò, có nhiều biểu tượng hơn B và U làm những việc khác không?

Tiền tố

>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str
4 tạo ra một chuỗi RAW (ví dụ:
>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str
5 là dấu gạch chéo ngược +
>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str
6 thay vì một tab) và trích dẫn ba
>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str
7 hoặc
>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: can't concat bytes to str
8 cho phép các chuỗi chuỗi đa dòng.

Dữ liệu byte, tạo thành chuỗi Python B, ngụ ý chữ theo nghĩa đen đại diện cho số nguyên nằm trong khoảng từ 0 đến 255. Loại dữ liệu của chuỗi Python B và chuỗi Python khác nhau đáng kể. Các loại dữ liệu byte theo nghĩa chữ trong chuỗi Python B biểu thị các giá trị trong khoảng từ 0 đến 255, trong khi chuỗi truyền thống chứa một chuỗi các ký tự Unicode như UTF-16 hoặc UTF-32. Trong Python, các chuỗi được sử dụng để thể hiện dữ liệu dựa trên văn bản và được chứa trong các trình điều khiển đơn hoặc kép. Một thể hiện của một chuỗi là như:

# my_str = "Đây là một chuỗi mẫu"

Các chuỗi đại diện cho dữ liệu mà con người có thể đọc, chẳng hạn như chữ cái, ký tự đặc biệt, từ ngữ hoặc gần như bất kỳ thứ gì khác, trong khi byte được sử dụng để thể hiện các cấu trúc dữ liệu nhị phân cấp thấp. Cả hai loại dữ liệu STR và BYTE trong Python 2.x đều là đối tượng loại byte, nhưng điều này đã thay đổi trong Python 3.x. Byte và chuỗi khác nhau chủ yếu bởi vì các byte có thể đọc được bằng máy, trong khi chuỗi có thể đọc được của con người và cuối cùng văn bản được dịch thành byte để xử lý.

Bằng cách thêm tiền tố B vào chuỗi thông thường Python, kiểu dữ liệu đã được thay đổi từ chuỗi thành byte. Các chuỗi có thể được chuyển đổi thành byte, được gọi là mã hóa, trong khi việc chuyển đổi byte thành chuỗi được gọi là giải mã. Để hiểu khái niệm này tốt hơn, hãy để thảo luận về một số ví dụ.

Ví dụ 1:

Các byte đề cập đến các chữ đại diện cho các giá trị từ 0 đến 255, trong khi STR đề cập đến các chữ bao gồm một loạt các ký tự Unicode (được mã hóa trong UTF-16 hoặc UTF-32, tùy thuộc vào tổng hợp Python). Chúng tôi đã thay đổi kiểu dữ liệu của một chuỗi tiêu chuẩn từ chuỗi thành byte bằng cách đính kèm tiền tố B vào nó. Giả sử bạn có hai chuỗi str_one = ‘Alex, và String_two = b‘alexa,

Bạn nghĩ sao? Hai cái này giống nhau hay khác nhau? Sự khác biệt là trong kiểu dữ liệu. Hãy để một cái nhìn vào các loại của cả hai biến chuỗi.

str_one = 'Alex'= 'Alex'

print(type(str_one))(type(str_one))

str_two = b'alexa '= b'Alexa'

print(type(str_two))(type(str_two))

Hướng dẫn what is b in python output? - b trong đầu ra python là gì?

Khi mã được nêu ở trên được chạy, đầu ra sau được tạo ra.

Hướng dẫn what is b in python output? - b trong đầu ra python là gì?

Ví dụ 2:

Một quy trình gọi là mã hóa được sử dụng để chuyển đổi chuỗi thành byte. Một quy trình được gọi là giải mã có thể được sử dụng để chuyển đổi byte thành chuỗi. Xem xét ví dụ sau:

Phương thức Decode () sẽ được sử dụng trong ví dụ này. Hàm chuyển đổi từ sơ đồ mã hóa được sử dụng để mã hóa chuỗi đối số thành sơ đồ mã hóa được sử dụng để mã hóa chuỗi đối số thành sơ đồ mã hóa đã chọn. Điều này có hiệu ứng ngược lại chính xác như mã hóa. Hãy cùng nhìn vào một minh họa và hiểu làm thế nào chức năng này hoạt động.

my_str = b'decoration '= b'Decoration'

in ('\ n \ n đầu vào:')('\n\n Input:')

print(my_str)(my_str)

print(type(my_str))(type(my_str))

result = my_str.decode ()= my_str.decode()

in ('\ n \ n đầu ra:')('\n\n Output:')

print(result)(result)

print(type(result))(type(result))

Hướng dẫn what is b in python output? - b trong đầu ra python là gì?

Đầu ra của mã được đề cập ở trên sẽ trông giống như thế này.

Hướng dẫn what is b in python output? - b trong đầu ra python là gì?

Để bắt đầu, chúng tôi đã lưu trữ một chuỗi đầu vào với giá trị ‘trang trí, trong biến my_str. Kiểu dữ liệu của chuỗi, cũng như chuỗi đầu vào, sau đó được trình bày. Hàm giải mã () sau đó đã được sử dụng và đầu ra được lưu trong biến kết quả. Cuối cùng, chúng tôi đã viết chuỗi trong biến kết quả và loại dữ liệu biến. Kết quả là kết thúc có thể được nhìn thấy.

Ví dụ 3:

Trong ví dụ thứ ba của chúng tôi, chúng tôi đã chuyển đổi chuỗi thành byte. Đầu tiên, chúng tôi đã in một từ trong mã dưới đây. Chuỗi này có độ dài là 2. Bởi vì đây là một chuỗi được mã hóa bằng hàm mã hóa () trong dòng tiếp theo, mang lại kết quả Bát \ xc3 \ x961. Chuỗi được mã hóa được đưa ra dưới đây dài 3 byte, như được biểu thị bằng dòng mã thứ ba.

in ('ÖL')('Öl')

in ('Öl'.encode (' UTF-8 ')))('Öl'.encode('UTF-8'))

in (len ('Öl'.encode (' UTF-8 ')))))(len('Öl'.encode('UTF-8')))

Hướng dẫn what is b in python output? - b trong đầu ra python là gì?

Đây là đầu ra sau khi chúng tôi đã thực hiện chương trình.

Hướng dẫn what is b in python output? - b trong đầu ra python là gì?

Conclusion:

Bây giờ bạn đã biết khái niệm về chuỗi B trong Python và cách chuyển đổi byte thành chuỗi và ngược lại trong Python trong bài viết này. Chúng tôi đã xem qua một ví dụ chi tiết để chuyển đổi byte thành chuỗi và chuỗi thành byte. Tất cả các phương pháp được giải thích tốt với các ví dụ.

Thông tin về các Tác giả

Xin chào, tôi là một nhà văn tự do và thường viết cho Linux và các nội dung liên quan đến công nghệ khác

Dữ liệu B trong Python là gì?

Trong Python 3, các byte theo nghĩa đen luôn được đặt trước với 'B' hoặc 'B';Họ tạo ra một thể hiện của loại byte thay vì loại STR.Chúng chỉ có thể chứa các ký tự ASCII;Các byte có giá trị số từ 128 trở lên phải được biểu thị bằng lối thoát.Bytes literals are always prefixed with 'b' or 'B'; they produce an instance of the bytes type instead of the str type. They may only contain ASCII characters; bytes with a numeric value of 128 or greater must be expressed with escapes.

Làm cách nào để loại bỏ B trong sản lượng Python?

Hàm giải mã () được sử dụng để loại bỏ tiền tố B của chuỗi.Hàm được sử dụng để chuyển đổi từ sơ đồ mã hóa, trong đó chuỗi đối số được mã hóa thành sơ đồ mã hóa mong muốn, qua đó tiền tố B được xóa.. The function is used to convert from the encoding scheme, in which the argument string is encoded to the desired encoding scheme, through which the b prefix gets removed.

Chuỗi B làm gì?

Bằng cách thêm tiền tố B vào chuỗi thông thường Python, kiểu dữ liệu đã được thay đổi từ chuỗi thành byte.Các chuỗi có thể được chuyển đổi thành byte, được gọi là mã hóa, trong khi việc chuyển đổi byte thành chuỗi được gọi là giải mã.the data type was changed from string to bytes. Strings can be converted to bytes, known as encoding, while the conversion of bytes to string is called decoding.

%S %d trong python là gì?

Chúng được sử dụng để định dạng chuỗi.%s hoạt động một trình giữ chỗ cho một chuỗi trong khi %D hoạt động như một trình giữ chỗ cho một số.acts as a placeholder for a number.