網絡爬蟲--3.str和bytes的區別

文章目錄

  • 一.bytes
  • 二.str和bytes相互轉換
  • 三.bytearray

一.bytes

bytes對象只負責以二進制字節序列的形式記錄所需記錄的對象,至于該對象到底表示什么(比如到底是什么字符)則由相應的編碼格式解碼所決定。

bytes是Python 3中特有的,Python 2 里不區分bytes和str。

Python2 中

>>> type(b'xxxxx')
<type 'str'>
>>> type('xxxxx')
<type 'str'>

Python3 中

>>> type(b'xxxxx')
<class 'bytes'>
>>> type('xxxxx')
<class 'str'>

二.str和bytes相互轉換

python3中:
str 使用encode方法轉化為 bytes
bytes通過decode轉化為str

In [9]: str1='人生苦短,我用Python!'In [10]: type(str1)
Out[10]: strIn [11]: b=str1.encode()In [12]: b
Out[12]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\
xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'In [13]: type(str1.encode())
Out[13]: bytes
In [22]: b
Out[22]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\
xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'In [23]: type(b)
Out[23]: bytesIn [24]: b.decode()
Out[24]: '人生苦短,我用Python!'In [25]: type(b.decode())
Out[25]: str

在Python 2中由于不區分str和bytes所以可以直接通過encode()和decode()方法進行編碼解碼。

而在Python 3中把兩者給分開了這個在使用中需要注意。實際應用中在互聯網上是通過二進制進行傳輸,所以就需要將str轉換成bytes進行傳輸,而在接收中通過decode()解碼成我們需要的編碼進行處理數據這樣不管對方是什么編碼而本地是我們使用的編碼這樣就不會亂碼。

三.bytearray

bytearray和bytes不一樣的地方在于,bytearray是可變的。

In [26]: str1
Out[26]: '人生苦短,我用Python!'In [28]: b1=bytearray(str1.encode())In [29]: b1
Out[29]: bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')In [30]: b1.decode()
Out[30]: '人生苦短,我用Python!'In [31]: b1[:6]=bytearray('生命'.encode())In [32]: b1
Out[32]: bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')In [33]: b1.decode()
Out[33]: '生命苦短,我用Python!'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452086.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git使用問題

1、錯誤&#xff1a;The following untracked working tree files would be overwritten by checkout 。后面跟了幾個文件 場景&#xff1a;需要從一個分支切換到另一個分支時報錯 方法&#xff1a;git clean -d -fx "" 原因&#xff1a;之前修改了.gitignore文件&am…

jdbc寫入和讀取過程

[jdbc寫操作] Class.forName("com.mysql.jdbc.Driver"); Connection conn DriverManager.getConnection("jdbc:mysql://localhost:3306/big","root","root"); ppst conn.preparedStatement("insert into test(id,name,age) val…

分享11款主流的開源編程工具

導讀&#xff1a;有了開源編程工具&#xff0c;在基于開源許可證的情況下您可以輕松學習、修改、提高代碼的質量&#xff0c;本文收集了11款最主流的且有價值的開源編程工具。或許會給您帶來一絲驚喜。一起來看下吧。 NO.1 Rhomobile Rhodes Ruby或許是Github上第二大流行語言…

數據庫觸發器

觸發器是一種特殊類型的存儲過程&#xff0c;它在指定的表中的數據發生變化時自動生效。喚醒調用觸發器以響應 INSERT、UPDATE 或 DELETE 語句。觸發器可以查詢其它表&#xff0c;并可以包含復雜的Transact-SQL語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待…

jQuery中ready與load事件的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 jQuery中ready與load事件的區別 概述&#xff1a; 大家在工作中用jQuery的時候一定會在使用之前這樣&#xff1a;12345678//document rea…

網絡爬蟲--4.requests的簡單實用

文章目錄一.簡介二.基本GET請求1.最基本的GET請求--直接用get方法2.添加 headers 和查詢參數parmas3.通過requests獲取網絡上圖片的大小三.基本POST請求1.傳入data數據四.代理&#xff08;proxies參數&#xff09;五.私密代理六.web客戶端驗證七.Cookies 和 Sission1.Cookies2.…

編程各類資源大放送

小編的公眾號[編程軟文]一直在運營著&#xff0c;但是我的公眾號只是發一些技術類文章&#xff0c;沒有特地為自己的公眾號如何添粉去操作&#xff0c;目前公眾號關注度比較低。看著其他人的公眾號粉絲越來越多&#xff0c;小編也需要為自己做些事。為了提高自己公眾號的關注度…

使用Spring框架能帶來那些好處?

1、Dependency Injection(DI)方法使得構造器和JavaBean properties文件中的依賴關系一目了然。2、與EJB容器相比較&#xff0c;Ioc容器更加趨向于輕量級。這樣一來Ioc容器在郵箱的內存和CPU資源的情況下進行應用程序的開發和發布就變得十分有利。3、Spring并沒有閉門造車&#…

誰在告誰?移動專利混戰圖

移動領域激戰正酣&#xff0c;同樣是沒有永遠的朋友&#xff0c;只有永遠的利益。 蘋果剛剛起訴三星的Galaxy手機和平板電腦山寨了蘋果的產品&#xff0c;而此前兩家并沒有過節。再比如微軟和亞馬遜以及HTC之間的授權協議爭端。移動領域的爭端如此之多&#xff0c;以至于看客無…

java中list()和listfile()

File fnew File("c:\\");String[] f1f.list();File[] f2f.listFiles();① list() 返回一個字符串數組&#xff0c;這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 以C盤為例&#xff0c;返回的是c盤下文件夾名字的字符串數組,如[TEMP, Windows]②listFile…

光棍節程序員闖關秀過關全攻略

maven/java/web/bootstrapQQ群&#xff1a;566862629。希望更多人一起幫助我學習。 光棍節程序員闖關秀過關全攻略。程序員的寂寞誰能懂?"SF光棍節程序員闖關秀"智力挑戰小游戲火熱上線&#xff0c;看看你能闖到第幾關&#xff1f; 游戲地址: http://segmentfault…

jekins搭建

2019獨角獸企業重金招聘Python工程師標準>>> 轉自 https://www.cnblogs.com/hdwang/p/6081994.html &#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xf…

網絡爬蟲--5.urllib庫的基本使用(1)

文章目錄一. 前言二. urlopen三. Request四. User-Agent五. 添加更多的Header信息1. 添加一個特定的header2. 隨機添加/修改User-Agent一. 前言 所謂網頁抓取&#xff0c;就是把URL地址中指定的網絡資源從網絡流中讀取出來&#xff0c;保存到本地。 在Python中有很多庫可以用來…

高性能計算

信息時代的硬件芯片和存儲器價格以摩爾定律的形式下降&#xff0c;可是現在處理的數據量也越來越大。我們先以cocoa編程為例&#xff0c;然后再結合網格計算、云計算&#xff0c;綜合對最新的高性能計算技術作介紹。 使用 runloop 在cocoa編程如果用NSThread開線程 [NSThread …

混合型面向對象語言和純面向對象語言

20世紀80年代以來&#xff0c;面向對象語言像雨后春筍一樣大量涌現&#xff0c;形成了兩大類面向對象語言。 一類是純面向對象語言&#xff0c;如Smalltalk和Eiffel等語言 另一類是混合型面向對象語言&#xff0c;也就是在過程語言的基礎上增加面向對象機制&#xff0c;如C等…

塊級元素的margin-left和margin-right的用法注意

此時是有效果顯示的因為html文檔流默認是從上往下&#xff0c;從左往右進行顯示的&#xff0c;所以此時是有效果的。那如果此時把#son的塊元素的margin-right:20px; 是沒有效果的此時是沒有效果的&#xff0c;如圖所示&#xff1a;如果此時想要margin-right有效果的話&#xf…

Apache Tiles的基本使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、概述 對于一個新的技術&#xff0c;了解其基本的概念和和原理是學好該技術的基礎。 2、Tiles的概念 Tiles 是復合視圖模式&#xff0…

js--------1.時間

1 //獲取當前時間 yyyy-MM-dd2 function getNowFormatDate() {3 var date new Date();4 var seperator1 "-";5 var seperator2 ":";6 var month date.getMonth() 1;7 var strDate date.getDate();8 if (month > 1 &&…

網絡爬蟲--6.urllib庫的基本使用(2)

文章目錄一. urllib.parse.urlencode()和urllib.parse.unquote()二. Get方式三. 批量爬取百度貼吧數據四.POST方式五.關于CA六.處理HTTPS請求 SSL證書驗證一. urllib.parse.urlencode()和urllib.parse.unquote() 編碼工作使用urllib.parse的urlencode()函數&#xff0c;幫我們…

面向對象語言的技術特點

1.支持類與對象概念的機制 所有面向對象語言都允許用戶動態創建對象&#xff0c;并且可以用指針引用動態創建的對象。允許動態創建對象&#xff0c;就意味著系統必須處理內存管理問題&#xff0c;如果不及時釋放不再需要的對象所占用的內存&#xff0c;動態存儲分配就有可能耗…