導航:首頁 > 編程語言 > python編碼強制轉換

python編碼強制轉換

發布時間:2023-02-09 23:02:04

python 編碼轉換與中文處理

python 中的 unicode 是讓人很困惑、比較難以理解的問題. 這篇文章 寫的比較好, utf-8是 unicode的一種實現方式,unicode、gbk、gb2312是編碼字元集.

Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用" 編碼指示 "來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明: # -*- coding=utf-8 -*- 或者 #coding=utf-8
其他的編碼如:gbk、gb2312也可以;否則會出現:

先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode ,他們都是basestring的派生類;

在str的文檔中有這樣的一句話:

也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。

unicode 轉為 gb2312,utf-8等,使用 encode(encoding)

utf-8,GBK轉換為 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)

普通的 str 轉為 unicode,

如果直接執行s.encode('gb2312')會發生什麼?

這里會發生一個異常:Python 會自動的先將 s 解碼為 unicode ,然後再編碼成 gb2312。因為解碼是python自動進行的,我們沒有指明解碼方式,python 就會使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是 ANSCII,如果 s 不是這個類型就會出錯。
拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯了:

對於這種情況,我們有兩種方法來改正錯誤:

s = '中文'
s.decode('utf-8').encode('gb2312') ```

import sys
reload(sys) # Python2.5 初始化後會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')

print open("Test.txt").read()

import codecs
print open("Test.txt").read().decode("utf-8")

Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'ufeff' in position 0: illegal multibyte sequence

import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")

s = "中文"
print unicode(s, "utf-8")

Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data

s = "中文"
print unicode(s, "gbk")

s = "中文"
print unicode(s, "cp936")

㈡ python 編碼轉換

A. Usage decode/encode:

def utf2gbk(s):
''' 按utf-8解碼,再按gbk編碼 '''
return s.decode('utf-8').encode('gbk')

with open(fname) as handle:
for ln in handle:
print utf2gbk(ln)

B. Usage codecs:

import codecs

env_coding='gbk' # 設置一個系統環境編碼
with codecs.open(fname, 'r', 'utf-8') as handle:
for ln in handle:
# print ln # 此時的ln是unicode
print ln.encode(env_coding) # 按設定系統環境編碼輸出

㈢ python字元編碼轉換

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

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

㈣ Python 怎麼做強制類型轉換

a=5
printstr(a)

㈤ python將八個0的字元串強制轉成整型返回什麼

python中強制將字元串轉換為數字的方法:

1、python中可以使用int()函數將字元串轉換為整型數字,int() 函數用於將一個字元串或數字轉換為整型。

int() 方法的語法:class int(x, base=10)

參數

x -- 字元串或數字。

base -- 進制數,默認十進制。

返回值:返回整型數據。

示例:>>> s1 = '999'

>>> if s1.isdigit():

num1 = int(s1)

>>> type(num1)

>>> num1

999

2、使用float()函數將字元串轉換為浮點數

float() 函數用於將整數和字元串轉換成浮點數。

float()方法語法:class float([x])

參數

x -- 整數或字元串

返回值:返回浮點數。

示例:>>> s2 = '999.888'

>>> if s2.isdigit():

num2 = float(s2)

>>> type(num2)

Traceback (most recent call last):

File "", line 1, in

type(num2)

NameError: name 'num2' is not defined

>>>

>>> s2.isdigit()

False

>>> s2 = '999.888'

>>> num2 = float(s2)

>>> type(num2)

>>> num2

999.888

>>>

㈥ Python3強制類型轉換問題,謝謝大佬解答

提示說的很清楚了,轉換成int必須是字元串,但你的是列表。你的plist中的元素是列表當然不能轉換成int類型,看你的第四行。

㈦ python 字元串格式的unicode編碼轉中文

 python對於Unicode編碼可以使用decode進行轉換成中文:

>>> str = b'\xe8\xb4\xb9\xe8\x84\x91\xe5\xad\x90'

>>> str.decode('utf-8')

'費腦子'

如果是字元串類型的Unicode編碼沒辦法直接用decode進行轉換:

>>> str ="\\xe8\\xb4\\xb9\\xe8\\x84\\x91\\xe5\\xad\\x90"

>>> str.decode('utf-8')

Traceback (most recent call last):

  File "<stdin>", line 1, in <mole>

AttributeError: 'str' object has no attribute 'decode'

處理方式:

>>> str = eval("b" + "\"" + str + "\"")

>>> str.decode('utf-8')

'費腦子'

㈧ python編碼轉換:ascii和GB2312的問題

供參考。gb312本來就是標准ascii的一種擴充,ascii可以視同為gb312的子集。所以,如果var的值全部是在ascii裡面的話,轉成gb312後也還是屬於ascii,所以使用detect函數的時候,編碼還是ascii(當然同時也屬於gb312);如果var的值不是全部在ascii裡面的話,語句var = var.decode('ascii')可能會出錯。
只要var的值是英文(內碼0-127),轉換不轉換,都已經是gb2312編碼。

㈨ 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

方法是絕對可行的

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

閱讀全文

與python編碼強制轉換相關的資料

熱點內容
考勤表加密怎麼辦 瀏覽:735
arj壓縮與解壓批處理怎麼寫 瀏覽:658
php和大數據哪個好 瀏覽:930
未來最值得投資的加密貨幣 瀏覽:526
ascii碼是編譯的時候用嗎 瀏覽:781
壓縮機感應包可以通用嗎 瀏覽:412
方舟伺服器怎麼發布到搜索列表 瀏覽:270
xml防反編譯 瀏覽:241
數據傳輸加密系統技術方案 瀏覽:842
程序員沒有準備去面試 瀏覽:4
51單片機usb滑鼠 瀏覽:881
qq伺服器的ip地址查詢 瀏覽:112
java仿qq聊天 瀏覽:401
解壓的ipa重新打包 瀏覽:144
程序員那麼可愛vip版 瀏覽:240
程序員怎麼升職 瀏覽:245
圖形化命令按鈕vb 瀏覽:987
vcu盤加密怎麼設置 瀏覽:415
如何加密備份微信聊天記錄 瀏覽:529
安卓手機如何模擬鍵盤 瀏覽:932