在Python 3中將字符串轉換為字節的最佳方法是什麼?


Answers

它比想像的容易:

my_str = "hello world"
my_str_as_bytes = str.encode(my_str)
type(my_str_as_bytes) # ensure it is byte representation
my_decoded_str = my_str_as_bytes.decode()
type(my_decoded_str) # ensure it is string representation
Question

似乎有兩種不同的方法將字符串轉換為字節,如TypeError的答案中所示:'str'不支持緩衝區接口

哪種方法會更好或者更加Pythonic? 還是僅僅是個人喜好的問題?

b = bytes(mystring, 'utf-8')

b = mystring.encode('utf-8')



你可以簡單地將字符串轉換為字節,使用:

a_string.encode()

你可以簡單地將字節轉換為字符串:

some_bytes.decode()

bytes.decodestr.encode encoding='utf-8'作為默認值。

以下函數(取自Effective Python )可能對將str轉換為bytes並將bytes轉換為str有用:

def to_bytes(bytes_or_str):
    if isinstance(bytes_or_str, str):
        value = bytes_or_str.encode() # uses 'utf-8' for encoding
    else:
        value = bytes_or_str
    return value # Instance of bytes


def to_str(bytes_or_str):
    if isinstance(bytes_or_str, bytes):
        value = bytes_or_str.decode() # uses 'utf-8' for encoding
    else:
        value = bytes_or_str
    return value # Instance of str



Links