最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的字符串類型解讀

 更新時(shí)間:2024年06月24日 10:00:46   作者:冰美式QAQ  
這篇文章主要介紹了python中的字符串類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、python2的字符串類型

在python2中,字符串一般有兩種類型,unicode和str。(python3中是Unicode類型)

  • str類型,字節(jié)碼類型,根據(jù)某種編碼把字符串轉(zhuǎn)成對(duì)應(yīng)的字節(jié),一個(gè)字符根據(jù)不同的編碼規(guī)則對(duì)應(yīng)不同的字節(jié)數(shù)。GBK編碼一個(gè)字符對(duì)應(yīng)兩個(gè)字節(jié)。
  • unicode類型,則是用unicode編碼的字符串,一個(gè)字符對(duì)應(yīng)兩個(gè)字節(jié)。

直接賦值字符串,類型為str,str為字節(jié)串,會(huì)按照開頭的encoding來(lái)編碼成對(duì)應(yīng)的字節(jié)。

賦值的時(shí)候在字符串前面加個(gè)u,類型則為unicode,直接按照unicode編碼成兩個(gè)字節(jié)。

# coding=utf-8
s1 = "字節(jié)串"
print(type(s1)) #輸出 <type 'str'>,按照開頭的encoding來(lái)編碼成相應(yīng)的字節(jié)
print(len(s1)) #輸出9,因?yàn)榘磚tf8編碼,一個(gè)漢字占3個(gè)字節(jié),3個(gè)字就占9個(gè)字節(jié)

s2 = u"萬(wàn)國(guó)碼"
print(type(s2)) #輸出 <type 'unicode'>,用unicode編碼,2個(gè)字節(jié)1個(gè)字符
print(len(s2)) #輸出3,unicode用字符個(gè)數(shù)來(lái)算長(zhǎng)度,從這個(gè)角度上看,unicode才是真正意義上的字符串類型

E:\PycharmProjects\LEDdisplay2\venv\Scripts\python.exe E:/PycharmProjects/LEDdisplay2/1.py
<type 'str'>
9
<type 'unicode'>
3

Process finished with exit code 0

再舉個(gè)例子:

比如要從一個(gè)文件中找出所有后兩位是’字符’的詞語(yǔ),在進(jìn)行判斷的時(shí)候:

# coding=utf-8
s = '中文字符'
s[-2:] == '字符‘ 
# 返回false,本以為相等但在python2中是不相等的
# 這里的”字符是用開頭的encoding聲明解釋的,我開頭用的是utf8,漢字占3個(gè)字節(jié),所以“字符”占了6個(gè)字節(jié)),而s[-2:]取的是最后兩個(gè)”雙字節(jié)“,所以不相同。

s = u'中文字符'
s[-2:] == u'字符' 
# 加u強(qiáng)制轉(zhuǎn)換成unicode
# 返回true,這也是為什么說(shuō)unicode是真正意義上的字符串類型。因?yàn)槭褂玫氖莡nicode,”字符“占的是兩個(gè)”雙字節(jié)“,一個(gè)"雙字節(jié)“一個(gè)字。

對(duì)于經(jīng)常處理中文字符串的人,統(tǒng)一用unicode(加u強(qiáng)制轉(zhuǎn)換成unicode)就可以避免這個(gè)坑了。

雖然有些字符串處理函數(shù)用str也可以,應(yīng)該是函數(shù)里面幫你處理了編碼問題。

二、python3的字符串類型

python3中,字符串是以Unicode編碼的,是str類型。

如果要在網(wǎng)絡(luò)上傳輸,或者保存到磁盤,就需要把str變?yōu)橐宰止?jié)為單位的bytes。python3中對(duì)bytes類型的數(shù)據(jù)用帶b前綴的單引號(hào)或者雙引號(hào)表示。

以Unicode表示的str通過(guò)encode()方法可以編碼為指定的bytes。反過(guò)來(lái),從網(wǎng)絡(luò)或磁盤上讀取的字節(jié)流,即bytes,要把bytes變?yōu)閟tr,通過(guò)decode()方法。

>>> "ABC".encode("utf-8")
b'ABC'
>>> "中文".encode("utf-8")
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
# 純英文的str可以用ASCII編碼為bytes,內(nèi)容是一樣的,含有中文的str可以用UTF-8編碼為bytes。
# 含有中文的str無(wú)法用ASCII編碼,因?yàn)橹形木幋a的范圍超過(guò)了ASCII編碼的范圍,Python會(huì)報(bào)錯(cuò)
# 因?yàn)閜ython3中字符串類型是Unicode編碼的,所以不需要先decode成Unicode,直接encode成指定編碼的bytes

反過(guò)來(lái)

>>> b'ABC'.decode("utf-8")
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode("utf-8")
'中文'
>>>

三、python3字符函數(shù)舉例

len()函數(shù),str類型字符串調(diào)用時(shí),計(jì)算的是字符數(shù),bytes類型調(diào)用時(shí),計(jì)算的是字節(jié)數(shù)

>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6
# 1個(gè)中文字符經(jīng)過(guò)UTF-8編碼后通常會(huì)占用3個(gè)字節(jié),而1個(gè)英文字符只占用1個(gè)字節(jié)
  • ord()函數(shù),獲取單個(gè)字符的整數(shù)表示
  • chr()函數(shù),把單個(gè)字符的整數(shù)轉(zhuǎn)換為對(duì)應(yīng)的字符
C:\Users\xxx>python3
Python 3.8.7 (tags/v3.8.7:6503f05, Dec 21 2020, 17:59:51) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> ord("A")
65
>>> ord("中")
20013
>>> chr(65)
'A'
>>> chr(25991)
'文'
>>>
  • chardet.detect(str),查看字符串的編碼格式
  • detect()函數(shù)接受一個(gè)參數(shù),一個(gè)非unicode字符串

它返回一個(gè)字典,其中包含自動(dòng)檢測(cè)到的字符編碼和從0到1的可信度級(jí)別。

  • encoding:表示字符編碼方式;
  • confidence:表示可信度;
  • language:語(yǔ)言
# encoding: utf-8
import chardet
s = "中文".encode("utf-8")
print(chardet.detect(s))

D:\SoftInstall\Python\Python38\python3.exe E:/PycharmProjects/displayPY3/1.py
{'encoding': 'utf-8', 'confidence': 0.7525, 'language': ''}

Process finished with exit code 0

檢測(cè)出的編碼是ascii,confidence字段表示檢測(cè)的概率是0.7525(即75.25%)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • django虛擬環(huán)境(virtualenv)的創(chuàng)建

    django虛擬環(huán)境(virtualenv)的創(chuàng)建

    在使用django開發(fā)項(xiàng)目的時(shí)候,一個(gè)環(huán)境只能對(duì)應(yīng)一個(gè)項(xiàng)目,若不安裝虛擬環(huán)境、都裝在系統(tǒng)里面,每次項(xiàng)目加載都需要加載所有的安裝包,本文就介紹django虛擬環(huán)境的安裝,感興趣的可以了解一下
    2021-08-08
  • 詳解如何使用Python操作MySQL的各種功能和用法

    詳解如何使用Python操作MySQL的各種功能和用法

    當(dāng)今互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)處理已經(jīng)成為了一個(gè)非常重要的任務(wù),而MySQL作為一款開源的關(guān)系型數(shù)據(jù)庫(kù),被廣泛應(yīng)用于各種場(chǎng)景,本篇博客將介紹如何使用Python操作MySQL的各種功能,以及一些高級(jí)用法,需要的朋友可以參考下
    2023-11-11
  • Python numpy.add函數(shù)的具體使用

    Python numpy.add函數(shù)的具體使用

    本文主要介紹了Python numpy.add函數(shù)的具體使用,numpy.add函數(shù)不僅僅是一個(gè)簡(jiǎn)單的加法操作,更是一個(gè)功能強(qiáng)大且高度優(yōu)化的工具,可適用于各種復(fù)雜的數(shù)值計(jì)算和數(shù)據(jù)處理任務(wù),感興趣的可以了解一下
    2023-12-12
  • Django中利用filter與simple_tag為前端自定義函數(shù)的實(shí)現(xiàn)方法

    Django中利用filter與simple_tag為前端自定義函數(shù)的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了Django中利用filter與simple_tag為前端自定義函數(shù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • 詳解Python self 參數(shù)

    詳解Python self 參數(shù)

    這篇文章主要介紹了Python self 參數(shù)詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python幾種繪制時(shí)間線圖的方法

    Python幾種繪制時(shí)間線圖的方法

    這篇文章主要介紹了Python幾種繪制時(shí)間線圖的方法,Matplotlib 作為 Python 家族最為重要的可視化工具,其基本的 API 以及繪制流程還是需要掌握的
    2022-08-08
  • Python實(shí)現(xiàn)的計(jì)算器功能示例

    Python實(shí)現(xiàn)的計(jì)算器功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的計(jì)算器功能,涉及Python四則運(yùn)算、取反、百分比等相關(guān)數(shù)學(xué)運(yùn)算操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04
  • Python使用functools實(shí)現(xiàn)注解同步方法

    Python使用functools實(shí)現(xiàn)注解同步方法

    這篇文章主要介紹了Python使用functools實(shí)現(xiàn)注解同步方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Python2到Python3的遷移過(guò)程中報(bào)錯(cuò)AttributeError: ‘str‘ object has no attribute ‘decode‘問題的解決方案大全

    Python2到Python3的遷移過(guò)程中報(bào)錯(cuò)AttributeError: ‘str‘ objec

    在 Python 編程過(guò)程中,AttributeError: 'str' object has no attribute 'decode' 是一個(gè)常見的錯(cuò)誤,這通常會(huì)在處理字符串時(shí)出現(xiàn),尤其是在 Python 2 到 Python 3 的遷移過(guò)程中,本文將詳細(xì)介紹該問題的根源,并提供解決方案,需要的朋友可以參考下
    2025-04-04
  • Tensorflow實(shí)現(xiàn)酸奶銷量預(yù)測(cè)分析

    Tensorflow實(shí)現(xiàn)酸奶銷量預(yù)測(cè)分析

    這篇文章主要為大家詳細(xì)介紹了Tensorflow酸奶銷量預(yù)測(cè)分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評(píng)論

沐川县| 蒙山县| 新龙县| 平阳县| 榆林市| 宜州市| 五大连池市| 邯郸市| 鄂托克前旗| 广安市| 收藏| 涞水县| 渑池县| 临泽县| 信宜市| 都匀市| 买车| 平陆县| 民和| 靖安县| 临西县| 正镶白旗| 聂拉木县| 合作市| 旬邑县| 水富县| 织金县| 黄冈市| 黔西县| 故城县| 牟定县| 多伦县| 星子县| 怀柔区| 马鞍山市| 平谷区| 淮南市| 德州市| 高雄县| 增城市| 桑植县|