Python隨機生成中文字元的方法

2021-08-21 14:39:15 字數 1881 閱讀 1114

第一種方法:unicode碼

在unicode碼中,漢字的範圍是(0x4e00, 9fbf)

import random

def unicode():

val = random.randint(0x4e00, 0x9fbf)

return chr(val)

這個方法比較簡單,但是有個小問題,unicode碼中收錄了2萬多個漢字,包含很多生僻的繁體字。

第二種方法:gbk2312

gbk2312對字元的編碼採用兩個位元組相組合,第乙個位元組的範圍是0xb0-0xf7, 第二個位元組的範圍是0xa1-0xfe.

更新:

值得注意的是,對於第55區,d7fa-d7fe的5個是沒有編碼的,需要在兩個位元組組合的範圍中特意剔除一下。

對gbk2312編碼方式詳細的解釋請參看gbk2312編碼(參考文獻3)(參考文獻4)。

import random

def gbk2312():

head = random.randint(0xb0, 0xf7)

body = random.randint(0xa1, 0xfe)

val = f''

str = bytes.fromhex(val).decode('gb2312')

return str

gbk2312收錄了6千多常用漢字.兩種方法的取捨就看需求了。

pyhon encode和decode函式

python2.x中預設的編碼的基礎型別是unicode編碼的型別,在python3.x才轉化為基於unicode的字串。

那麼我們在python2.x的學習中就會遇到各種各樣的編碼問題,encode和decode函式就是很好的幫我們解決這樣問題的工具。

下面的程式中有詳細的介紹和例子!

在python2.x中:

u = u'中文' #顯示指定unicode型別物件u 

str = u.encode('gb2312') #以gb2312編碼對unicode對像進行編碼

str1 = u.encode('gbk') #以gbk編碼對unicode對像進行編碼

str2 = u.encode('utf-8') #以utf-8編碼對unicode對像進行編碼

u1 = str.decode('gb2312')#以gb2312編碼對字串str進行解碼,以獲取unicode

u2 = str.decode('utf-8')#如果以utf-8的編碼對str進行解碼得到的結果,將無法還原原來的unicode型別

在python3.x中:

u = '中文' #指定字串型別物件u 

str = u.encode('gb2312') #以gb2312編碼對u進行編碼,獲得bytes型別物件str

u1 = str.decode('gb2312')#以gb2312編碼對字串str進行解碼,獲得字串型別物件u1

u2 = str.decode('utf-8')#如果以utf-8的編碼對str進行解碼得到的結果,將無法還原原來的字串內容

但是我們在讀取、寫入檔案的時候就要注意以檔案的格式來判斷用什麼方式來操作了,txt檔案預設都是utf-8當然你也可以自己設定編碼格式。

我們在對txt檔案進行操作時,最好都將編碼格式轉化為utf-8來方便操作吧!

參考文獻:

1、 2018.7.20

2、 2018.7.20

3、 2018.7.20

4、 2018.9.18

python 隨機生成漢字 英文本元

生成漢字 第一種方法 unicode碼 在unicode碼中,漢字的範圍是 0x4e00,9fbf importrandom defunicode val random.randint 0x4e00,0x9fbf returnchr val 這個方法比較簡單,但是有個小問題,unicode碼中收錄了...

python查詢中文字元

filename seek.py import unicodedata import sys import os class seek 功能 查詢中文,並替換成指定字元或字串 使用方法 python指令碼用法 引數說明 d 檔案目錄 絕對或相對路徑 預設為指令碼所在目錄 t 檔案型別 檔名字尾,如....

Python提取中文字元

寫這個jupyter的原因是好幾次自己爬完新聞之後,發現中間有些是html標籤 或者其他多餘的英文本元,自己也不想保留,那麼這時候乙個暴力簡單的方法就是使用 unicode 範圍 u4e00 u9fff 來判別漢字 unicode 分配給漢字 中日韓越統一表意文字 的範圍為 4e00 9fff 目前...