Hướng dẫn what is the b in front of string python? - b ở trước chuỗi python là gì?

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

  • str =
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    0 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)
  • NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    1 =
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    2 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]
    
    4 và
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    1 là
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    6;
  • SQL, nghĩ về str
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    8 và
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    1 là
    >>> '\uFEFF'.encode('UTF-8')
    b'\xef\xbb\xbf'
    
    0 hoặc
    >>> '\uFEFF'.encode('UTF-8')
    b'\xef\xbb\xbf'
    
    1;
  • Windows Registry, nghĩ về str
    >>> '\uFEFF'.encode('UTF-8')
    b'\xef\xbb\xbf'
    
    3 và
    NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
    
    1 là
    >>> '\uFEFF'.encode('UTF-8')
    b'\xef\xbb\xbf'
    
    5.

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'
6 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

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
1 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

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

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

Và bạn có thể giải mã

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
1 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 "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str

Ký hiệu

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
2 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')
    '€'
    
    4 =
    >>> b'\xE2\x82\xAC'.decode('UTF-8')
    '€'
    
    5 LIÊN QUAN = Trình tự các ký tự Unicode = 3.x str
  • A
    • 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')
      '€'
      
      9.

Để giảm bớt quá trình chuyển đổi 2.x sang-3.x, cú pháp theo nghĩa đen

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
2 đã được đưa vào Python 2.6, để cho phép phân biệt các chuỗi nhị phân (phải là
NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
1 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 "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str
3 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 "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str
4 không chuyển đổi nó thành chuỗi unicode trong 3.x.

Vì vậy, có,

NaN = struct.unpack('>d', b'\xff\xf8\x00\x00\x00\x00\x00\x00')[0]
2 nghĩa đen 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 "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str
6 tạo ra một chuỗi thô (ví dụ:
>>> b'\xEF\xBB\xBF' + 'Text with a UTF-8 BOM'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str
7 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 "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str
8 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 "<stdin>", line 1, in <module>
TypeError: can't concat bytes to str
9 hoặc
>>> b'A' == b'\x41'
True
0 cho phép các chuỗi chuỗi đa dòng.

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọcb‘ character before a string is used to specify the string as a “byte string“. 

    Bàn luận

    Trong Python, ký tự ‘B‘ trước một chuỗi được sử dụng để chỉ định chuỗi dưới dạng chuỗi byte Byte. & NBSP;

    Ví dụ:b_str doesn’t store a String object, instead, it stores a Byte String object.

    b_str = b hèhey Tôi là một chuỗi byte

    Bây giờ, B_STR doesn lưu trữ một đối tượng chuỗi, thay vào đó, nó lưu trữ một đối tượng chuỗi byte.Byte strings are strings that are in bytes. Generally, strings are converted to bytes first just like any other object because a computer can store data only in bytes. When working with byte strings, they are not converted into bytes as they are already in bytes.

    Sự khác biệt giữa chuỗi và chuỗi byte:

    Chuỗi là ký tự bình thường ở định dạng có thể đọc được trong khi các chuỗi byte là các chuỗi có trong byte. Nói chung, các chuỗi được chuyển đổi thành byte trước tiên giống như bất kỳ đối tượng nào khác vì máy tính chỉ có thể lưu trữ dữ liệu bằng byte. Khi làm việc với các chuỗi byte, chúng không được chuyển đổi thành byte vì chúng đã ở trong byte.

    Các chuỗi được chuyển đổi thành byte như thế nào?

    Python3

    Chuỗi được chuyển đổi thành byte, sử dụng mã hóa. Có nhiều định dạng mã hóa khác nhau thông qua đó các chuỗi có thể được chuyển đổi thành byte. Ví dụ như ví dụ. ASCII, UTF-8, v.v ...

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

    Để chuyển đổi chuỗi thành chuỗi byte trong Python:

    b'Hey I am a String'

    >>> b'A' == b'\x41'
    True
    
    1
    >>> b'A' == b'\x41'
    True
    
    2
    >>> b'A' == b'\x41'
    True
    
    3
    >>> b'A' == b'\x41'
    True
    
    4
    >>> b'A' == b'\x41'
    True
    
    5
    >>> b'A' == b'\x41'
    True
    
    6byte type:

    Python3

    Chuỗi được chuyển đổi thành byte, sử dụng mã hóa. Có nhiều định dạng mã hóa khác nhau thông qua đó các chuỗi có thể được chuyển đổi thành byte. Ví dụ như ví dụ. ASCII, UTF-8, v.v ...

    >>> b'A' == b'\x41'
    True
    
    7
    >>> 'A' == b'A'
    False
    
    6
    >>> 'A' == b'A'
    False
    
    7
    >>> 'A' == b'A'
    False
    
    8

    Để chuyển đổi chuỗi thành chuỗi byte trong Python:

    >>> b'A' == b'\x41'
    True
    
    1
    >>> b'A' == b'\x41'
    True
    
    2
    >>> b'A' == b'\x41'
    True
    
    3
    >>> b'A' == b'\x41'
    True
    
    4
    >>> b'A' == b'\x41'
    True
    
    5
    >>> b'A' == b'\x41'
    True
    
    6

    Python3

    Đầu ra

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

    Để chuyển đổi chuỗi thành chuỗi byte trong Python:

    Hey I am a Byte String

    >>> b'A' == b'\x41'
    True
    
    1
    >>> b'A' == b'\x41'
    True
    
    2
    >>> b'A' == b'\x41'
    True
    
    3
    >>> b'A' == b'\x41'
    True
    
    4
    >>> b'A' == b'\x41'
    True
    
    5
    >>> b'A' == b'\x41'
    True
    
    6string type:

    Python3

    Đầu ra

    >>> b'A' == b'\x41'
    True
    
    7
    >>> 'A' == b'A'
    False
    
    6
    >>> 'A' == b'A'
    False
    
    7
    >>> 'A' == b'A'
    False
    
    8


    Tiền tố B trong Python là gì?

    Tiền tố B biểu thị chuỗi byte theo nghĩa đen.Nếu bạn thấy nó được sử dụng trong mã nguồn Python 3, biểu thức sẽ tạo ra một đối tượng byte, không phải là đối tượng unicode str thông thường.signifies a bytes string literal. If you see it used in Python 3 source code, the expression creates a bytes object, not a regular Unicode str object.

    Làm thế nào để bạn thoát khỏi B trước một chuỗi trong 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. is used to remove the prefix b of a string. 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.

    Slash B làm gì trong Python?

    Nó tạo ra một ký tự backspace.Thiết bị đầu cuối của bạn đã thay thế O thứ hai khi in ký tự đó.produces a backspace character. Your terminal backspaced over the second o when printing that character.