導航:首頁 > 編程語言 > python字元串unicode編碼

python字元串unicode編碼

發布時間:2024-05-04 05:17:51

python字元編碼使用什麼碼

在python 2中默認編碼是ASCII,而在python 3中默認編碼是unicode。

❷ python字元串前綴 u和r的區別

(1)以r或R開頭的python中的字元串表示(非轉義的)原始字元串

python裡面的字元,如果開頭處有個r,比如:

(r』^time/plus/\d{1,2}/$』, hours_ahead)

說明字元串r"XXX"中的XXX是普通字元。

有普通字元相比,其他相對特殊的字元,其中可能包含轉義字元,即那些,反斜杠加上對應字母,表示對應的特殊含義的,比如最常見的」\n"表示換行,"\t"表示Tab等。

而如果是以r開頭,那麼說明後面的字元,都是普通的字元了,即如果是「\n」那麼表示一個反斜杠字元,一個字母n,而不是表示換行了。

以r開頭的字元,常用於正則表達式,對應著re模塊。

關於re模塊,詳情自己google搜索「python re」。

舉例:

原始字元串操作符(r/R),能方便處理反斜杠:

f = open(r'C:\Program
Files\Adobe\Reader 9.0\Setup Files\setup.ini','r')

for i in f:

print i

f.close()

(2)以u或U開頭的字元串表示unicode字元串

Unicode是書寫國際文本的標准方法。如果你想要用非英語寫文本,那麼你需要有一個支持Unicode的編輯器。

類似地,Python允許你處理Unicode文本——你只需要在字元串前加上前綴u或U。

舉例:

u"This is a Unicode string."

❸ python怎麼轉換unicode編碼

用decode()就行。decode()方法必須傳入一個參數,這個參數就是當前待轉碼的編碼,此函數方法的用意就是將當前編碼為Unicode編碼。

比如就你這提問的此頁面:

#使用版本是python2.
importurllib
url='https://..com/question/1499967322379602619.html?entry=qb_ihome_tag&hideOtherAnswer=true&newAnswer=1'
html=urllib.urlopen(url).read()
result=html.decode('gbk')
printresult

方法是絕對可行的

此法對字元串和文檔內容的解碼一樣有效。

❹ Python2.7 中文字元編碼,使用Unicode時,選擇什麼編碼格式

關於編碼和亂碼的問題,我簡單講一下。

通常問這類問題的人是混淆了若干個不同的概念,並且他們自己也沒有意識到自己混淆了這些概念的。

❺ day-04 總結python字元串

1.什麼是字元串
序列,有序,不可變的
用單引號或者雙引號任意字元集,

2,字元串中的字元
普通字元:ན', 'sdfsdfsd', '+ + (**&^%$#@@', '發技術規范舉案說法'

'''
python中的字元採用的是unicode編碼

1.什麼是編碼
就是數字和字元的一一對應的,其中字元對應的數字就是字元的編碼
a - 97
b - 98

2.編碼方式
ASCII碼表 :針對數字字元,字母字元(26個小寫字母和26個大寫字母),一些英文中對應的符號進行編碼
小寫字母要大於大寫字母的編碼值,採用一個位元組對字元進行編碼,只能對128個字元進行編碼

Unicode碼 :Unicode碼包含了ASCII碼表,同時能夠對世界上所有語言對應的符號進行編碼,
採用兩個位元組進行編碼,能夠編碼65536個字元

3.兩個函數
chr(編碼值)--將字元編碼值轉化為字元
ord(字元)-- 獲取字元對應的編碼值
中文編碼范圍 0x4e00~~~~~0x9fa5

一旦一個字元串確定了,那麼字元串中每個字元的位置就確定了,而且每個字元會對應一個表示其位置和順序的下標值

1,下標(索引)
字元串中的每一個字元都有一個下標,代表在字元串中的位置
下標范圍是:0到字元串長度---1 0(代表第一個字元的位置)
-1 ~ 字元串長度 -1(代表字元串中最後一個字元的位置)

'abc' # ''

獲取單個字元
語法:字元串[下標]--獲取字元串中指定下標對應的字元
說明 字元串--可以是字元串常量,也可以是字元串變數
[]---固定寫法
下標--字元的下標,不能越界。

獲取部分字元
語法:字元串[開始下標:結束下標:步長]
步長-- 一個整數
功能: 從開始下標獲取到結束下標前位置,每次下標值增加步長,結果是字元串
注意:當步長是整數,開始下標對應的字元要在結束下標的前面
當步長是負數,開始下標對應的字元要在結束下標的後面

方法2:字元串[開始下表:結束下標](相當於步長是一)

獲取部分字元,省略下標
獲取部分字元的時候開始下標和結束下標都可以省略
a.開始下標省略
字元串[:結束下標:步長] 或者字元串[:結束下表]
字元串是正數:從字元串開頭開始往後獲取
字元串是負數:從字元串結尾開始往前獲取

結束下標省略
字元串[開始下標::步長]
步長是正數,從開始下標從前往後獲取到字元串最後
步長是負數,從開始下標從後往前獲取到字元串開始

,加法運算
字元串1 + 字元串2 將兩個字元串拼接在一起,產生一個新的字元串

乘法運算
字元串 * n(正整數):字元串中的內容重復n次產生一個新的字元串

比較運算符
a. == !=
字元串1 == 字元串2 ---------判斷兩個字元串是否相等

b.> ,< , >= ,<= (所有的大寫字母編碼都比小寫的編碼小)
兩個字元串比較大下:從第一個開始,找到第一對不同的字元,然後比較他們的編碼值的大小

in 和 not in
字元串1 in 字元串2 :判斷字元串2是否包含字元串1
字元串1 not in 字元串2 :判斷字元串2是否不包含字元串1

len函數
len(序列)------- 獲取序列的長度
len(字元串)----獲取字元串中字元的個數

str函數
str(數據): 將數據轉換成字元串

其他數據轉換成字元串
所有的數據都可以轉換成字元串,轉換的時候就是在數據的值的最外面加引號

補充:系統對應的類型名不能用來給變數命名

字元串轉其他類型
字元串轉整數: int(字元串) 去掉引號後本身就是個整數的字元串才能轉
字元串轉浮點型: Float(字元串)
字元串轉布爾: boll(字元串) ,除了空串會轉化成False,其他的都會轉化成True

格式字元串
指的是字元串中通過格式佔位符來表示字元串中變化,然後後面再通過其他的值來給佔位符賦值
含有格式佔位符的字元串 % (佔位符對應的值)
說明:
含有格式佔位符有固定寫法,可以有多個
%----固定寫法
()----裡面值 的個數要和前面的格式佔位符一一對應
%d--整數
%s--字元串
%f--小數
%c--字元(可以將數字轉換成字元)

字元串.capitalize() - 將字元串第一個字元轉換成大寫

2.字元串對齊
字元串.center(width, fillchar) - 居中
字元串.ljust(width, fillchar) - 左對齊
字元串.rjust(width, fillchar) - 右對齊

width - 正整數,表示新的字元串的寬度
fillchar - 字元, 填充字元串

字元串.isalpha 若字元串至少有一個字元,並且所有字元都是字母就返回True,否則返回False

字元串。isdigit() 若字元串中只包含數字就返回True,否則返回False

若字元串中只包含數字字元,則返回True,否則返回 False

3.join(seq)
字元串1.join(字元串2): 將字元串1的內容插入到字元串2的每個字元之間

max(字元串) 編碼最大
min(字元串)

count(str)|返回 str 在 string 裡面出現的次數

|islower()|如果字元串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回 True,否則返回 False

expandtabs(tabsize=8)|把字元串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8 。

|isspace()|如果字元串中只包含空白,則返回 True,否則返回 False

endswith(suffix)|檢查字元串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的范圍內是否以 obj 結束,如果是,返回 True,否則返回 False.

❻ python3字元串都是什麼編碼

編碼

字元串是一種數據類型,但是,字元串比較特殊的是還有一個編碼問題。

因為計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算機在設計時採用8個比特(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進制11111111=十進制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整數是4294967295。

由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機里,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。

Unicode

Unicode把所有語言都統一到一套編碼里,這樣就不會再有亂碼問題了。

Unicode標准也在不斷發展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代操作系統和大多數編程語言都直接支持Unicode。

現在,捋一捋ASCII編碼和Unicode編碼的區別:ASCII編碼是1個位元組,而Unicode編碼通常是2個位元組。

字母A用ASCII編碼是十進制的65,二進制的01000001;

字元0用ASCII編碼是十進制的48,二進制的00110000,注意字元'0'和整數0是不同的;

漢字已經超出了ASCII編碼的范圍,用Unicode編碼是十進制的20013,二進制的01001110 00101101。

如果把ASCII編碼的A用Unicode編碼,只需要在前面補0就可以,因此,A的Unicode編碼是00000000 01000001。

新的問題又出現了:如果統一成Unicode編碼,亂碼問題從此消失了。但是,如果你寫的文本基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就十分不劃算。

所以,又出現了把Unicode編碼轉化為「可變長編碼」的UTF-8編碼。UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間:

字元

ASCII

Unicode

UTF-8

A 01000001 00000000 01000001 01000001

中 x 01001110 00101101 11100100 10111000 10101101

從上面的表格還可以發現,UTF-8編碼有一個額外的好處,就是ASCII編碼實際上可以被看成是UTF-8編碼的一部分,所以,大量只支持ASCII編碼的歷史遺留軟體可以在UTF-8編碼下繼續工作。

搞清楚了ASCII、Unicode和UTF-8的關系,我們就可以總結一下現在計算機系統通用的字元編碼工作方式:

在計算機內存中,統一使用Unicode編碼,當需要保存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。

用記事本編輯的時候,從文件讀取的UTF-8字元被轉換為Unicode字元到內存里,編輯完成後,保存的時候再把Unicode轉換為UTF-8保存到文件:

瀏覽網頁的時候,伺服器會把動態生成的Unicode內容轉換為UTF-8再傳輸到瀏覽器:

所以你看到很多網頁的源碼上會有類似<meta charset="UTF-8" />的信息,表示該網頁正是用的UTF-8編碼。

Python的字元串

在最新的Python 3版本中,字元串是以Unicode編碼的,也就是說,Python的字元串支持多語言,例如:

>>> print('包含中文的str')
包含中文的str

對於單個字元的編碼,Python提供了ord()函數獲取字元的整數表示,chr()函數把編碼轉換為對應的字元:

1個中文字元經過UTF-8編碼後通常會佔用3個位元組,而1個英文字元只佔用1個位元組。

在操作字元串時,我們經常遇到str和bytes的互相轉換。為了避免亂碼問題,應當始終堅持使用UTF-8編碼對str和bytes進行轉換。

Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行

#!/usr/bin/env python3# -*- coding: utf-8 -*-

第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

格式化:

在Python中,採用的格式化方式和C語言是一致的,用%實現,舉例如下:

format % (...params)
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'

%運算符就是用來格式化字元串的。在字元串內部,%s表示用字元串替換,%d表示用整數替換,%x表示16進制整數,有幾個%?佔位符,後面就跟幾個變數或者值,順序要對應好。如果只有一個%?,括弧可以省略。

格式化整數和浮點數還可以指定是否補0和整數與小數的位數:

>>> '%2d-%02d' % (3, 1)' 3-01'>>> '%.2f' % 3.1415926'3.14'

有些時候,字元串裡面的%是一個普通字元怎麼辦?這個時候就需要轉義,用%%來表示一個%:

>>> 'growth rate: %d %%' % 7'growth rate: 7 %'

❼ Python文件處理里encoding和encode有事區別,bytes類型是什麼意思

python問題我來回答你。

  1. 首先你要知道的是,字元串在Python內部的表示是unicode(統一碼、萬國碼)編碼,很多編程語言都是這么設計的,各個國家通用編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字元串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

    decode的作用是將其他編碼的字元串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字元串str1轉換成unicode編碼。

    encode的作用是將unicode編碼轉換成其他編碼的字元串,如str2.encode('gb2312'),表示將unicode編碼的字元串str2轉換成gb2312編碼。

    因此,轉碼的時候一定要先搞明白,字元串str是什麼編碼,然後decode成unicode,然後再encode成其他編碼。

  2. bytes類型是 Python 3.x版本新增的數據類型,在 Python 2.x 中是不存在的。字元串是以字元為單位進行處理的,bytes類型是以位元組為單位處理的。

    bytes 只負責以位元組序列的形式(二進制形式)來存儲數據,至於這些數據到底表示什麼內容(字元串、數字、圖片、音頻等),完全由程序的解析方式決定。

    說白了,bytes 只是簡單地記錄內存中的原始數據,至於如何使用這些數據,bytes 並不在意,你想怎麼使用就怎麼使用,bytes 並不約束你的行為。

    bytes 類型的數據非常適合在互聯網上傳輸,可以用於網路通信編程;bytes 也可以用來存儲圖片、音頻、視頻等二進制格式的文件。

舉個例子:

b = b'' # 創建一個空的bytes

b = byte() # 創建一個空的bytes

b = b'hello' # 直接指定這個hello是bytes類型

b = bytes('string',encoding='編碼類型') #利用內置bytes方法,將字元串轉換為指定編碼的bytes

b = str.encode('編碼類型') # 利用字元串的encode方法編碼成bytes,默認為utf-8類型

bytes.decode('編碼類型'):將bytes對象解碼成字元串,默認使用utf-8進行解碼。

❽ python123漢字的unicode編碼值

python的默認編碼是ascii,可以通過sys.setdefaultencoding('utf-8')函數設置python的默認編碼。

python中可以通過encode和decode的方式改變數據的編碼,比如:

>>> u'漢字'

u'\u6c49\u5b57'

>>> u'漢字'.encode('utf-8')

'\xe6\xb1\x89\xe5\xad\x97'

>>> u'漢字'.encode('utf-8').decode('utf-8')

u'\u6c49\u5b57'

我們可以通過這兩個函數設置編碼。

那麼,python中的str是什麼類型?

>>> import binascii

>>> '漢字'

'\xba\xba\xd7\xd6'

>>> type('漢字')

>>> print binascii.b2a_hex('漢字')

babad7d6

>>> print binascii.b2a_hex(u'漢字')

Traceback (most recent call last):

File "", line 1, in

UnicodeEncodeError: 'ascii' codec can't encode characters in

position 0-1: ordinal not in range(128)

>>> print binascii.b2a_hex(u'漢字'.encode('utf-8'))

e6b189e5ad97

>>> print binascii.b2a_hex(u'漢字'.encode('gbk'))

babad7d6

binascii是將數據的二進制轉換成ascii,上面的解釋是:『漢字'的類型是str,二進制是babad7d6,u『漢字'是無法轉換成ascii,這樣就報出了開頭的第一個錯誤。解決辦法就是把它.encode(『utf-8')成str類型。因為我命令行是windows默認的GBK編碼,所有u'漢字'.encode(『gbk')的時候,輸出結果和『漢字'結果一樣。

❾ python是什麼編碼格式

python編碼總結:
1).首先python有兩種格式的字元串,str和unicode,其中unicode相當於位元組碼那樣,可以跨平台使用。
str轉化為unicode可以通過unicode(),u,str.decode三種方式
unicode轉化為str,如果有中文的話,一般通過encode的方式
2).如果代碼中有中文的話,我們一般會添加 "# coding=utf-8",這個是什麼作用呢,一般如下:
如果代碼中有中文注釋,就需要此聲明比較高級的編輯器(比如我的emacs),會根據頭部聲明,將此作為代碼文件的格式。程序會通過
頭部聲明,解碼初始化 u」人生苦短」,這樣的unicode對象,(所以頭部聲明和代碼的存儲格式要一致
所以,當我們填上編碼頭的時候,使用s="中文",實際上type(s)是一個str,是已經將unicode以utf-8格式編碼成str。
其次,如果我們在代碼中使用s=u'中文',相當於將str以utf-8解碼成unicode。
推薦學習《python教程》。

閱讀全文

與python字元串unicode編碼相關的資料

熱點內容
游戲源碼怎麼抓 瀏覽:210
程序員幫大家引走怪物 瀏覽:10
手機網頁小游戲源碼 瀏覽:511
戰地一伺服器怎麼設置管理員 瀏覽:394
數控車床編程可以上班嗎 瀏覽:458
外業核查app在哪裡下載 瀏覽:360
蘋果6s性能相當於安卓什麼設備 瀏覽:900
java處理pdf 瀏覽:218
jspack加密 瀏覽:403
怎麼去掉app的感嘆號 瀏覽:301
百度能解壓rar 瀏覽:863
ping查詢ip地址伺服器 瀏覽:496
車輛抵押後沒有解壓能過戶嗎 瀏覽:149
無中文水果溯源碼 瀏覽:989
伺服器中roce是什麼 瀏覽:368
我的世界命令方塊輔助箱子指令 瀏覽:403
c源碼調試 瀏覽:859
銀行app如何加入支付保護中心 瀏覽:348
如何讓qq和別的app解綁 瀏覽:409
貴陽哪裡有華大單片機 瀏覽:755