日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python 字符串内容

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 字符串内容 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、介紹python 2和python 3中的字符串類型及用途

   python 2
    str
      簡單文本(如ascii編碼)和二進制數據(bytes)。
    unicode
      多字節文本(寬字符,如中文)。

  python 3
    str
      unicode文本,包含ascii、utf-8等。
    bytes
      字節,用于二進制數據表示,在一些需要低級數據結構的時候用到,譬如C語言等。
    bytearray
      bytes類型的一個變體,它是可變的并且支持原處修改。

二、字符編碼解碼的基礎知識及在python中的使用

  編解碼
    編碼:
      根據一個想要的編碼名稱,把一個字符串翻譯為其原始字節形式。
    解碼:
      根據其編碼名稱,把一個原始字節串翻譯為字符串形式的過程。

  python 2中編解碼對象的轉換關系
    ? ? ??decode? ? ? ? ? ? ? ?encode
    str ---------> unicode --------->str

    示例:
      s = '北京'
      s.decode('gb2312')
      s.decode('gb2312').encode(encoding='utf-8',errors='strict')

  python 3中編解碼對象的轉換關系
       decode     ? encode
    bytes ------> str(unicode)------>bytes

    示例:
      s = '北京'
      s.encode()
      b'\xe5\x8c\x97\xe4\xba\xac' #\為轉義字符,x為十六進制的標記,u為unicode
      s.encode().decode()

  查看對象或平臺的編碼環境
    1)檢查python默認的編碼
    ? ? ??import sys
    ? ? ??sys.getdefaultencoding()
     ? reload(sys)
    ? ? ??sys.setdefaultencoding('utf8')
    2)檢查字符對象的編碼,這個模塊識別不準,可以參考鏈接
     ? https://blog.csdn.net/u013314786/article/details/77931548
     ? import chardet
     ? print chardet.detect(html)
    ? ? ?識別模塊不太準的時候,可以使用decode采用一些常用的中文編碼進行解碼,如GBK,GB2312等。

三、python 2和python 3在字符串使用的上的一些區別

  1)python 3默認采用utf-8的字符集,而python 2默認采用ascii的編碼方式。
  2)python 2中存在str和unicode類型,python 3分為bytes和str類型。
  3)python 2的str類型可以表示二進制和字符串數據,而python 3中進行了區分
  4)python 2和3版本中的編解碼轉換規則不太一樣
    python 2中進行編碼轉換,必須先轉換為unicode對象
    python 3由于本身就值unicode,所以可直接進行轉換編碼
  5)文件讀取

python 2
讀取文件時,采用r和rb讀取文件文件時,無區別。
讀取文件時,直接讀取字節再通過ascii解碼,如果包含非ascii字符的打印為直接。
read方法輸出指定字節數。

python 3
讀取文本文件時,采用r和rb模式讀取輸出是不同的,rb輸出字節,r輸出字符。
讀取時采用utf-8進行解碼讀取。
read方法輸出字符數。

四、相關知識點

1)字節順序標記BOM
 ? 例如,在UTF-16和UTF-32編碼中,BOM指定大尾還是小尾格式(基本上,是確定一個位字符串的哪一端最重要)。
? ? ? 處理BOM的方法
? ? ? ? ? ?在文件進行寫入和讀取時使用具體編碼名來處理BOM,如下:
  ? ? >>> open('spam.txt', 'r', encoding='utf-8-sig').read()
  ? ?  ?'spam\nSPAM\n' #使用具體的編碼名處理BOM

2)轉換編碼
  我們總是可以把一個字符串轉換為不同于源字符集默認的一種編碼,但是,我們必須顯式地提供一個編碼名稱以進行編碼和解碼:
  >>>S = 'A?BèC'
  >>>S.encode() # Default utf-8 encoding
    b'A\xc3\x84B\xc3\xa8C'
  >>>T = S.encode('cp500') #轉換為cp500編碼

3)源文件字符集編碼聲明
  改變默認的文件編碼形式,在文件的第一或第二行聲明。
  # -*- coding: latin-1 -*-

?

重點提示:

  1、數據分層表示方法。

   ? 文件層面: ? ? ? ? ? ? ? ? 字節序列,可分為各類編碼形式的字節序列,如unicode,base64,自定義的字節流。

   ? python腳本文件層面:? 字符序列,自動執行編碼/解碼操作。

   ? python解釋器內存層面:unicode碼或字節碼。    

?

轉載于:https://www.cnblogs.com/solitarywares/p/10097954.html

總結

以上是生活随笔為你收集整理的python 字符串内容的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。