python字符串與字節序列


python3中字節與字符串

python3中只有一種數據類型可以保存文本信息,就是str(字符串),是不可變序列,保存的是unicode碼位。在python3中,用bytes對象來處理字節字符串。
bytes和可變的bytearray與str不同,只能用字節作為序列值,即0~256之間的整數表示。

 print(bytes([101,100,99]))
b'edc'
list(b'hello')
[104, 101, 108, 108, 111]
list(b'he llo')
[104, 101, 32, 32, 32, 108, 108, 111]#空格的序列值是32

從python3.0開始,所有沒有前綴的字符串都是unicode。字節字符串要加前綴b
unicode字符串是不可以用字節表示的文本,而將數據保存到文本或者通過網絡發送必須是二進制數據,所以必須將字符串對象編碼為字節序列
字符串轉字節序列:
1. str.encode(encoding,errors)方法,encoding為編解碼器,默認值為'utf-8'

'hello'.encode()
 b'hello'
  1. bytes(source,encoding,errors)構造函數,創建一個新的字節序列,source為字符串,encoding為編解碼器,必須指定encoding,沒有默認值

    bytes('hello',encoding='utf-8')
    b'hello'
    bytes('hello','utf-8')
    b'hello'
    將bytes表示的二進制數據轉成字符串

  2. bytes.decode(encoding,errors)方法,encoding必須與str.encode里的encoding相同

    b'hello'.decode()
    'hello'

  3. str(source,encoding,error)構造函數與bytes()構造函數相似,source是字節序列,必須指定str函數的參數encoding,它沒有默認值

    str(b'hello','utf-8')
    'hello'
    python字符串是不可變的,bytes字節序列也是不可變的,有優點有缺點,優點是由於不變性,字符串可以做字典的鍵或set的元素,因為一旦初始化字符串的值就不會改變。缺點是當要修改字符串時,都需要創建一個全新的字符串實例。bytearray時bytes可變版本,字節數組可以通過append,pop,insert等方法添加修改刪除字節序列

處理字符串拼接

  1. 使用+=方法

    s="" for sub in subs: s+=sub

  2. 使用join方法

    s="".join(subs)
    字符串的格式化方法str.format或%


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM