衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python字符與字節

麥辣雞腿堡 ? 來源:Python都知道 ? 作者:了不起 ? 2023-07-05 15:55 ? 次閱讀

一個字符不等價于一個字節,字符是人類能夠識別的符號,而這些符號要保存到計算的存儲中就需要用計算機能夠識別的字節來表示。一個字符往往有多種表示方法,不同的表示方法會使用不同的字節數。這里所說的不同的表示方法就是指字符編碼,比如字母A-Z都可以用ASCII碼表示(占用一個字節),也可以用UNICODE表示(占兩個字節),還可以用UTF-8表示(占用一個字節)。字符編碼的作用就是將人類可識別的字符轉換為機器可識別的字節碼,以及反向過程。

UNICDOE才是真正的字符串,而用ASCII、UTF-8、GBK等字符編碼表示的是字節串。關于這點,我們可以在Python的官方文檔中經常可以看到這樣的描述"Unicode string" , " translating a Unicode string into a sequence of bytes"

我們寫代碼是寫在文件中的,而字符是以字節形式保存在文件中的,因此當我們在文件中定義個字符串時被當做字節串也是可以理解的。但是,我們需要的是字符串,而不是字節串。一個優秀的編程語言,應該嚴格區分兩者的關系并提供巧妙的完美的支持。JAVA語言就很好,以至于了解Python和PHP之前我從來沒有考慮過這些不應該由程序員來處理的問題。遺憾的是,很多編程語言試圖混淆“字符串”和“字節串”,他們把字節串當做字符串來使用,PHP和Python2都屬于這種編程語言。最能說明這個問題的操作就是取一個包含中文字符的字符串的長度:

  • 對字符串取長度,結果應該是所有字符串的個數,無論中文還是英文
  • 對字符串對應的字節串取長度,就跟編碼(encode)過程使用的字符編碼有關了(比如:UTF-8編碼,一個中文字符需要用3個字節來表示;GBK編碼,一個中文字符需要2個字節來表示)

注意:Windows的cmd終端字符編碼默認為GBK,因此在cmd輸入的中文字符需要用兩個字節表示

>>> # Python2

>>> a = 'Hello,中國' # 字節串,長度為字節個數 = len('Hello,')+len('中國') = 6+2*2 = 10

>>> b = u'Hello,中國' # 字符串,長度為字符個數 = len('Hello,')+len('中國') = 6+2 = 8

>>> c = unicode(a, 'gbk') # 其實b的定義方式是c定義方式的簡寫,都是將一個GBK編碼的字節串解碼(decode)為一個Uniocde字符串

>>>

>>> print(type(a), len(a))

(, 10)

>>> print(type(b), len(b))

(, 8)

>>> print(type(c), len(c))

(, 8)

>>>

Python3中對字符串的支持做了很大的改動。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼
    +關注

    關注

    6

    文章

    957

    瀏覽量

    54951
  • 字符
    +關注

    關注

    0

    文章

    234

    瀏覽量

    25262
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85039
收藏 人收藏

    評論

    相關推薦

    探究python字節

    就是Python的“字節碼”文件。(但在Python 3上卻難覓其蹤 -- 原因是它們不再與.py文件出現在同一個目錄中,而是放在一個名為__pycache__的子目錄中了)?;蛟S你也已聽說過這是一種
    發表于 05-22 15:48

    python字符串拼接方式了解

    python字符串拼接的方式 在Python的實際開發中,很多都需要用到字符串拼接,python字符
    發表于 12-06 10:09 ?1050次閱讀

    字符流和字節流有什么那區別

    字符流在Java中,根據處理的數據單位不同,分為字節流和字符流。字符流是由字符組成的,例如 FileReader、FileWriter、Bu
    發表于 12-20 17:46 ?8077次閱讀
    <b class='flag-5'>字符</b>流和<b class='flag-5'>字節</b>流有什么那區別

    Python轉義字符使用總結資料免費下載

    本文檔的主要內容詳細介紹的是Python轉義字符使用總結資料免費下載主要內容包括了:Python轉義字符Python
    發表于 01-17 17:24 ?6次下載
    <b class='flag-5'>Python</b>轉義<b class='flag-5'>字符</b>使用總結資料免費下載

    什么是復制字符串?Python如何復制字符

    連續幾篇文章都在寫 Python 字符串,這出乎我的意料了。但是,有的問題,不寫不行,特別是那種靈機一動想到的問題,最后你發現,很多人根本不懂卻又誤以為自己懂了。那就繼續刨根問底,探究個明白吧
    發表于 11-25 10:32 ?3055次閱讀

    Python字符的實例詳細說明

    本文檔的主要內容詳細介紹的是Python字符的實例詳細說明包括了:Python 轉義字符Python
    發表于 10-14 17:13 ?7次下載
    <b class='flag-5'>Python</b><b class='flag-5'>字符</b>的實例詳細說明

    Python字符數統計函數程序

    Python字符數統計函數程序免費下載。
    發表于 05-25 14:35 ?19次下載

    2.2 python字符串類型

    2.2 python字符串類型 1. 如何定義字符串? 字符串是Python中最常用的數據類型之一。 使用單引號或雙引號來創建
    的頭像 發表于 02-17 17:08 ?1478次閱讀

    Python-字符

    字符串就是 一串字符 ,是編程語言中表示文本的數據類型,在Python中使用一對雙引號 "" 或者一對單引號來定義.
    的頭像 發表于 02-16 15:05 ?1221次閱讀
    <b class='flag-5'>Python</b>-<b class='flag-5'>字符</b>串

    python字符串有哪些特定方法

    python字符串序列操作也適用于列表和元組。 python字符串還有獨有方法,即字符串對象的函數,其他對象不可調用,只有
    的頭像 發表于 02-23 15:02 ?763次閱讀

    python字符串編寫有哪些方法

    python通過反斜杠\開頭來轉義特殊字符。比如用’\n’轉義換行符。 len()函數中,一個轉義字符占1個長度。
    的頭像 發表于 02-23 15:02 ?519次閱讀

    淺析python字符串模式匹配

    python字符串可以通過re模塊的模式匹配來處理文本。
    的頭像 發表于 02-23 15:04 ?2368次閱讀

    Python2與Python3中對字符串的支持

    其實Python3中對字符串支持的改進,不僅僅是更改了默認編碼,而是重新進行了字符串的實現,而且它已經實現了對UNICODE的內置支持,從這方面來講Python已經和JAVA一樣優秀。
    的頭像 發表于 07-05 16:15 ?765次閱讀

    Python字符編碼轉換

    UNICODE字符串可以與任意字符編碼的字節進行相互轉換,如圖: 那么大家很容易想到一個問題,就是不同的字符編碼的字節可以通過Unicode
    的頭像 發表于 07-05 16:25 ?1150次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>字符</b>編碼轉換

    字節流和字符流有什么區別?看完就知道!

    字節流和字符流有什么區別?看完就知道! 字節流和字符流是Java I/O系統中的兩個重要概念,用于處理輸入和輸出的數據。 首先,字節流是以
    的頭像 發表于 12-09 14:57 ?1569次閱讀
    皇冠赌球网| 唐朝百家乐的玩法技巧和规则 | 百家乐信息| 百家乐官网五种路单规| 盈得利百家乐娱乐城| 百家乐官网娱乐网会员注册| 利记国际娱乐| 百家乐事一箩筐的微博| 百家乐官网赢一注| 淘金百家乐官网现金网| 金三角娱乐城| 大发888城| 网上百家乐假| 真钱百家乐游戏大全| 百家乐官网tt娱乐场开户注册 | 威尼斯人娱乐城注册网址| 百家乐视频游戏帐号| 百家乐官网tt赌场娱乐网规则 | 大发888网页版免费| 百家乐网站那个好| 真人百家乐官网游戏网| 百家乐官网翻天快播粤语| 凯旋国际| 顶级赌场 官方直营网| 威尼斯人娱乐城好不好| 合乐8百家乐娱乐城| 博彩百家乐官网组选六六组 | 亲朋棋牌大厅下载| 永利高投注网哪个好| 百家乐真人娱乐场开户注册| 澳门百家乐国际娱乐城| 百家乐游戏看路| 同乐城百家乐官网娱乐城| 百家乐官网稳赢投资法| 哪里有百家乐游戏下载| 百家乐龙虎扑克牌游戏技巧打| 真人百家乐蓝盾娱乐平台| 最大的百家乐网站| 百家乐桌布橡胶| 谢通门县| 百家乐官网视频下载|