python轉換中文
1. 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")
2. python中,把『&#』 『&#x開頭的字元串轉換成中文
(一)
爬蟲時經常遇到'/u'開頭的unicode編碼的字元串,這時通過decode()來解決.
但偶爾也會遇到以『』 或者『』開頭的字元串, 這是HTML、XML 等 SGML 類語言的轉義序列(escape sequence)。它們不是「編碼」。
如果以『『 開頭,後接十進制數字蠢逗,
如果以『』開頭,後接十六進制數字。
在python中的解決方法帶哪賣是:
importhtml
a ='外观'
print(html.unescape(a))
# 輸出:外觀
希緩迅望對你有用
(二)
Python中escape和unescape
Python處理HTML轉義字元
在抓網頁數據經常遇到例如>或者 這種HTML轉義符,抓到字元串里很是煩人。
比方說一個從網頁中抓到的字元串
p ='<abc>'
用Python可以這樣處理:
import html
p ='<abc>'txt= html.unescape(p)print(txt)
#這樣就得到了txt= ''
如果還想轉回去,可以這樣:
import cgi
q = cgi.escape(html)print(q)
#這樣又回到了 html = '<abc>'
3. python中將阿拉伯數字轉換為中文
第一種方案:
def num_to_char(num):
"""數字轉中文"""
num=str(num)
new_str=""
num_dict={"0":u"零","1":u"一","2":u"二","3":u"三","4":u"四","5":u"五","6":u"六","7":u"七","8":u"八","9":u"九"}
listnum=list(num)
# print(listnum)
shu=[]
for i in listnum:
# print(num_dict[i])
shu.append(num_dict[i])
new_str="".join(shu)
# print(new_str)
return new_str
第二種方案
_MAPPING = (u'零', u'一', u'二', u'三', u'四', u'五', u'六', u'七', u'八', u'九', u'十', u'十一', u'十二', u'十三', u'十四', u'十五', u'十六', u'十七',u'十八', u'十九')
_P0 = (u'', u'十', u'百', u'千',)
_S4 = 10 ** 4
def _to_chinese4(num):
assert (0 <= num and num < _S4)
if num < 20:
return _MAPPING[num]
else:
lst = []
while num >= 10:
lst.append(num % 10)
num = num / 10
lst.append(num)
c = len(lst) # 位數
result = u''
for idx, val in enumerate(lst):
val = int(val)
if val != 0:
result += _P0[idx] + _MAPPING[val]
if idx < c - 1 and lst[idx + 1] == 0:
result += u'零'
return result[::-1]
4. python界面怎麼調成中文版
python設置中文界面的方法:
找到windows10中文字體所在文件夾
C:/Windows/Fonts/
在代碼前面加上:
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['simhei'] # 添加中文字體為黑體 plt.rcParams['axes.unicode_minus'] =False ... #ax[0, 0].set_ylabel(u"哈哈") #
注意前面加上'u'. #ax[2, 0].set_ylabel(u"嘿嘿") ... #或 import matplotlib.pyplot as plt from matplotlib import font_manager my_font =
font_manager.FontProperties(fname="C:/Windows/Fonts/simsun.ttf") # 添加中文字體為黑體 ... ax[0, 0].set_ylabel(u"哈哈", fontproperties=my_font) ax[2, 0].set_ylabel(u"嘿嘿", fontproperties=my_font)
發展歷程
自從20世紀90年代初Python語言誕生至今,它已被逐漸廣泛應用於系統管理任務的處理和Web編程。
1995 年,Guido van Rossum 在弗吉尼亞州的國家創新研究公司(CNRI)繼續他在 Python 上的工作,並在那裡發布了該軟體的多個版本。
2000 年五月,Guido van Rossum和 Python 核心開發團隊轉到 BeOpen.com 並組建了 BeOpen PythonLabs 團隊。 同年十月,BeOpen PythonLabs 團隊轉到 Digital Creations (現為 Zope Corporation)。
2001 年,Python 軟體基金會 (PSF) 成立,這是一個專為擁有 Python 相關知識產權而創建的非營利組織。 Zope Corporation 現在是 PSF 的贊助成員。
5. python3.11如何將幫助文件調為中文
python變成中文版的實現方法如下:
首先下載pycharm漢化包;
然後將「resources_en.jar」文件更名為「resources_cn.jar」;
最後將「resources_cn.jar」文件復制回lib文件夾內即可。
PS:建議不要使用漢化版,會導致一些小問題,例如設置界面顯示不完整等。
6. python中怎樣將unicode轉換成原來的中文
python默認就是unicode存儲。如果是從文件讀取的,在open的參數中指定encoding關鍵字參數就行。如下:
#coding=utf-8/importjson /defLoadQuestion(): /f=open("test.json",'r') qas=json.load(f) question=qas['documents'] /returnquestion/t=LoadQuestion() /printstr(t).decode("unicode-escape")
拓展資料:
通常python2時所有IO讀寫都是byte方式。也就是編碼後的。java也是這樣子。只有python3還有某些特定的模塊才會自動將byte重新轉換成unicode
在python2里的確可以使用s.decode('gbk','ignore')之類的變成unicode。不過在python3里應該是這樣子, s.encode('gbk','ignore')這樣就變成了byte
如果你喜歡 utf-8,可以s.encode(『utf-8','ignore')和s.decode(『utf-8','ignore')
7. python 如何將亂碼轉成漢字
1、python2與python3稍微有點區別
2、python2中默認的字元編碼格式都是unicode,在字元串前加'u',表示unicode 編碼
3、將unicode轉換成中文,只需要用deconde解碼就可以了
>>> u='歡迎'>>> e=u.encode()>>> eb'\xe6\xac\xa2\xe8\xbf\x8e'>>> e.decode()#python3中默認就是utf-8編碼'歡迎'>>> e.decode('gbk')#如果解碼為gbk就是亂碼'嬈四繋'
python2編碼環境比較復雜,在這里不做詳細說明
8. python idle怎麼調成中文版
1、首先點擊電腦上的開始菜單,在開始菜單中安裝的python目錄下點擊『IDLE(Python 3.6 64-bit),進入IDLE。
9. 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')
'費腦子'
10. 用python實現將一列中所有的ID根據碼表轉換成中文
python默認晌絕就是unicode存儲。如果是從文件讀取的,在open的參數中指定encoding關鍵字參數就行。如下:
#coding=utf-8/importjson /defLoadQuestion(): /f=搜襪open("test.json",'世謹激r') qas=json.load(f) question=qas['documents'] /returnquestion/t=LoadQuestion() /printstr(t).decode("unicode-escape")