爬蟲中的關于字符串的一些理解

1.基本概念

字符(Character)是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等

字符集(Character set)是多個字符的集合

字符集包括:ASCII字符集、GB2312字符集、GB18030字符集、Unicode字符集等

ASCII編碼是1個字節,而Unicode編碼通常是2個字節。

UTF-8是Unicode的實現方式之一,UTF-8是它是一種變長的編碼方式,可以是1,2,3個字節

2.Python3中的字符串

Python3中兩種字符串類型

 1.str:unicode的呈現形式
 2.bytes: 字節類型,互聯網上的數據都是以二進制的方式(字節類型)傳輸的
使用方法:
 1.str使用encode方法轉化為bytes
 2.bytes通過decode轉化為str
注意:編碼方式與解碼方式必須一樣,否則就會出現亂碼

3.Python2中的字符串

Python2中字符串有兩種類型

 1.unicode類型
 2.字節類型

在Python2中,字符串無法完全地支持國際字符集和Unicode編碼。為了解決這種限制,Python2對Unicode數據使用了單獨的字符串類型。要輸入Unicode字符串,要在第一個引號前加上'u'。

Python2中普通字符串實際上就是已經編碼(非Unicode)的字節字符串

3.1.python2中的字節類型字符串
python2 中定義字符串的時候,會自動將字符串轉換為合適編碼的字節字符串,比如中文:自動轉換為utf-8編碼的字節字符串

舉個例子(linux終端,默認終端的編碼utf-8):

>>> a = "你好"  #如此定義字符串的時候,其為字節類型
>>> a
'\xc4\xe3\xba\xc3'
>>> type(a)
<type 'str'>

 上面的這種定義方式和在字符串前面加上b的效果一樣,可以對其解碼,轉化為str類型

>>> c =b"你好"
>>> c
'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> type(a)
<type 'str'>
>>> c.decode("utf-8")
u'\u4f60\u597d'

 3.2 Python2中的Unicode類型 
如果需要定義Unicode字符串,即非字節類型的字符串的時候需要在前面加上‘u’

>>> e = u"你好"
>>> e
u'\u4f60\u597d'
>>> type(e)
<type 'unicode'>
>>> e.encode('utf-8')
'\xe4\xbd\xa0\xe5\xa5\xbd'

3.3 python2中字節類型和uicode類型的轉化
  1.字節類型通過decode轉化為Unicode類型
  2.Unicode類型通過很encode方法轉化為字節類型
  3.方法的使用和Python3相同,但是在方法中默認的編碼解碼方式為ASCII,對中文需要手動指定為utf-8

4.文件編碼
  在Python中保存字符串到文件中,文件編碼取決于第一次寫入的字符串編碼,如果后續寫入的字符串編碼和文件編碼不一致時,則出現亂碼(Python寫入文件沒有Unicode編碼的文件編碼)。
  4.1 Python3只要是寫入Unicode字符串,都按‘w’模式寫入,除非是 非Unicode(gbk、utf8、jpg、mp4等非Unicode數據),按 "wb" 寫入。
  4.2Python2只要是寫入字符串,都按 "w" 模式寫入,除非是 圖片、音頻、視頻這種非字符串數據,按 "wb" 模式寫入。

?

轉載于:https://www.cnblogs.com/litao2011/p/9534867.html

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

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

相關文章

分布式數據一致性

分布式系統數據一致性問題 感謝作者分享&#xff01;

HttpServletRequest中獲取IP值

獲取IP值&#xff1a; public class IpAdrressUtil {/*** 獲取Ip地址* param request* return*/private static String getIpAdrress(HttpServletRequest request) {String Xip request.getHeader("X-Real-IP");String XFor request.getHeader("X-Forwarded-F…

國外較好的IT網站

最近有些讀者給我來信說很喜歡這個網站上的文章&#xff0c;并且也想通過翻譯學習英文&#xff0c;他們詢問我這些文章的英文原文是從哪里找到的? 外刊IT評論上的翻譯的英文來源很雜&#xff0c;我總結了一下&#xff0c;大概有幾個 集中的出處&#xff0c;下面列舉出來供大家…

oracle怎樣把查詢的null轉換為0

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 NVL(Expr1,Expr2)如果Expr1為NULL&#xff0c;返回Expr2的值&#xff0c;否則返回Expr1的值 例如&#xff1a;select NVL(SUM(MONEY) ,0…

Map轉為String

Map轉為String 最近在做redis緩存時&#xff0c;需要將一個Map<String,Object>的對象轉換為String對象存入redis&#xff0c;用的時候需從redis中取出來后并轉為Map<String,Objcet>對象。 之前的做法直接就是Map對象的toString()存入redis,后面取出是就是用再轉換為…

PowerBI分析Exchange服務器IIS運行日志

只要是基于Windows Server 的IIS來提供Web服務的應用&#xff0c;其實都可以對IIS的日志W3C進行分析&#xff0c;這樣可以快速的了解整個web站點的運行情況&#xff0c;特別是對一些請求頁面響應時間有要要求的&#xff0c;都可以從這些日志中分析問題出在哪&#xff0c;下面我…

創建自已的sql函數

# 隨機產生字符串 #rand_string(n INT) rand_string 是函數名 (n INT) //該函數接收一個整數create function rand_string(n INT) returns varchar(255) #該函數會返回一個字符串begin #chars_str定義一個變量 chars_str,類型是 varchar(100),默認值abcdefghijklmnopqrstuvwxyz…

優秀博客匯總

分布式事務產生場景 一文搞定分布式系統數據一致性問題 分布式緩存的基本原理 分布式相關匯總 分布式事務&#xff0c;兩階段提交協議&#xff0c;三階段提交協議 三星索引 TCP如何保持長連接&#xff0c;并識別不通請求&#xff1f; redisson中的看門狗機制總結 二叉樹…

.NET Framework各版本比較

導讀&#xff1a;一直以來&#xff0c;眾多學校教學以及公司開發環境所使用Visual Studio .NET Framework版本多不相同&#xff0c;本文作者比較了.NET Framework多個版本之間的區別&#xff0c;方便各位選擇和切換.NET Framework。 版本號 發布日期 Visual Studio的版本 Windo…

java中 4 種取整函數

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 如下&#xff1a; round 函數可以特別注意一下&#xff1a;

python中的.idea文件夾是干嘛的

pycharm作為IDE時&#xff0c;會自動生成.idea文件夾用。 來存放項目的配置信息。這個文件夾是自動生成&#xff0c;版本控制信息等&#xff0c;包括歷史記錄。

section8

本章節的目的是 【明確目標用戶群】 &#xff0c;以更好的服務現有用戶。 【知識點】 1.作圖 顯示中文plt.rcParams[font.sans-serif] [SimHei] # 步驟一&#xff08;替換sans-serif字體&#xff09; plt.rcParams[axes.unicode_minus] False # 步驟二&#xff08;解決坐標軸…

經典算法匯總

一. 數組相關 二. 鏈表相關 三. 字符串相關 LeetCode第3題&#xff1a;無重復字符的最長子串 LeetCode第567題&#xff1a;字符串的排列 四. 二叉樹相關

碼農如何實現高帥富

當今IT界真可謂是好不熱鬧&#xff1a;谷歌推出chrome os&#xff0c;微軟推出windows 8&#xff0c;W3C的HTML5也讓人如雷貫耳&#xff0c;又有“云”飄在天上&#xff0c;至于最近最火的移動開發諸如ios、iphone、windows phone更是無人不知&#xff0c;無人不曉了&#xff0…

jQuery的name選擇器 模糊匹配

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 $("div[id]") 選擇所有含有id屬性的div元素 $("input[nameeinsdan]") 選擇所有的name屬性等于einsdan的input元素 $…

2018.8.26 Spring自學如門

什么是Spring&#xff1f; Spring是一個開源框架&#xff0c;Spring是于2003 年興起的一個輕量級的Java 開發框架&#xff0c;由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的復雜性而創建的…

排查騰訊云服務器被挖礦病毒【pnscan】挾持

一、問題發現 最新在使用騰訊云部署項目應用&#xff0c;具體方式為docker部署。今天早上發現騰訊云發來一條報警信息&#xff1a; 看到信息中說到攻擊行為&#xff0c;懷疑是否中了病毒&#xff0c;決定排查一下問題。 二、排查過程 首先登錄騰訊云服務器控制臺&#xff0…

redis 操作

一、自動分配&#xff08;redis&#xff09; 數據放緩存了&#xff0c;為的是速度快 redis是支持持久化的&#xff0c;如果關機了以后&#xff0c;數據已經會放在文件里了 先買上一臺電腦&#xff1a;裝上redis服務器軟件 - 這個服務器有個工網IP&#xff1a;47.93.4.198 - 端口…

GroupID和ArtifactID

GroupID是項目組織唯一的標識符&#xff0c;實際對應JAVA的包的結構&#xff0c;是main目錄里java的目錄結構。 ArtifactID就是項目的唯一的標識符&#xff0c;實際對應項目的名稱&#xff0c;就是項目根目錄的名稱。

解決報錯:java.lang.NoSuchMethodException: com.tangyuan.entity.RicherProduct.<init>()

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.報錯;java.lang.NoSuchMethodException: com.tangyuan.entity.RicherProduct.<init>() 2. 我看到網上有人說是因為少寫這一句&…