python3隨機生成中文字符(隨機生成兩字或三字的名字)

第一種方法:Unicode碼

在unicode碼中,漢字的范圍是(0x4E00, 9FBF)

import random

def Unicode():
    val = random.randint(0x4e00, 0x9fbf)
    return chr(val)

這個方法有個小問題,unicode碼中收錄了2萬多個漢字,包含很多生僻的繁體字.

第二種方法:GBK2312

gbk2312對字符的編碼采用兩個字節(jié)相組合,第一個字節(jié)的范圍是0xB0-0xF7, 第二個字節(jié)的范圍是0xA1-0xFE.
對GBK2312編碼方式詳細的解釋請參看GBK2312編碼

import random

def GBK2312():
    head = random.randint(0xb0, 0xf7)
    body = random.randint(0xa1, 0xf9)   # 在head區(qū)號為55的那一塊最后5個漢字是亂碼,為了方便縮減下范圍
    val = f'{head:x}{body:x}'
    str = bytes.fromhex(val).decode('gb2312')
    return str

GBK2312收錄了6千多常用漢字.兩種方法的取舍就看需求了.
原博:http://www.reibang.com/p/73bf99e37ca2

需求:隨機生成兩字或三字的名字

思路1:姓后面的第一個名泽疆,用數組隨機取數蕴掏,數組第一個數據為隨機的中文字符(調用上述函數)介陶,第二個數據為空字符效扫,隨機取數取到空字符就是兩字名字菲盾,取到非空字符就是三字名字

思路2:for循環(huán)生成中文字符的函數,然后進行str拼接粘都,循環(huán)次數為隨機生成[1-2]隨機整數不跟,隨機到1,則為二字名字励堡,隨機到2谷丸,則為三字名字(4字名字類推)

思路1代碼:

import random

def GBK2312():
    head = random.randint(0xb0, 0xf7)
    body = random.randint(0xa1, 0xf9)  # 在head區(qū)號為55的那一塊最后5個漢字是亂碼,為了方便縮減下范圍
    val = f'{head:x}{body:x}'
    st = bytes.fromhex(val).decode('gb2312')
    return st

def first_name():  #   隨機取姓氏字典
    first_name_list = [
        '趙', '錢', '孫', '李', '周', '吳', '鄭', '王', '馮', '陳', '褚', '衛(wèi)', '蔣', '沈', '韓', '楊', '朱', '秦', '尤', '許',
        '何', '呂', '施', '張', '孔', '曹', '嚴', '華', '金', '魏', '陶', '姜', '戚', '謝', '鄒', '喻', '柏', '水', '竇', '章',
        '云', '蘇', '潘', '葛', '奚', '范', '彭', '郎', '魯', '韋', '昌', '馬', '苗', '鳳', '花', '方', '俞', '任', '袁', '柳',
        '酆', '鮑', '史', '唐', '費', '廉', '岑', '薛', '雷', '賀', '倪', '湯', '滕', '殷', '羅', '畢', '郝', '鄔', '安', '常',
        '樂', '于', '時', '傅', '皮', '卞', '齊', '康', '伍', '余', '元', '卜', '顧', '孟', '平', '黃', '和', '穆', '蕭', '尹',
        '姚', '邵', '堪', '汪', '祁', '毛', '禹', '狄', '米', '貝', '明', '臧', '計', '伏', '成', '戴', '談', '宋', '茅', '龐',
        '熊', '紀', '舒', '屈', '項', '祝', '董', '梁']
    n = random.randint(0, len(first_name_list) - 1)
    f_name = first_name_list[n]
    return f_name

def second_name():
    # 隨機取數組中字符,取到空字符則沒有second_name
    second_name_list = [GBK2312(), '']
    n = random.randint(0, 1)
    s_name = second_name_list[n]
    return s_name

def last_name():
    return GBK2312()

def create_name():
    name = first_name() + second_name() + last_name()
    return name

print(create_name())

思路2代碼:

def create_name():
    n = random.randint(1, 2)
    name = ''
    for i in range(n):
        s = GBK2312()
        name = name+s
    return first_name()+name

優(yōu)化后版本(2023.5.19更新):
random.choice()從序列中獲取一個隨機元素应结,其原型為random.choice(sequence)刨疼,參數sequence表示一個有序類型。這里說明一下鹅龄,sequence在Python中不是一種特定的類型揩慕,而是泛指序列數據結構。列表扮休,元組漩绵,字符串都屬于sequence

second_name = random.choice([GBK2312(), ''])
def GBK2312():
    head = random.randint(0xb0, 0xf7)
    body = random.randint(0xa1, 0xf9)  # 在head區(qū)號為55的那一塊最后5個漢字是亂碼,為了方便縮減下范圍
    val = f'{head:x}{body:x}'
    st = bytes.fromhex(val).decode('gb2312')
    return st

def create_name():
    first_name_list = [
        '趙', '錢', '孫', '李', '周', '吳', '鄭', '王', '馮', '陳', '褚', '衛(wèi)', '蔣', '沈', '韓', '楊', '朱', '秦', '尤', '許',
        '何', '呂', '施', '張', '孔', '曹', '嚴', ]
    f_name = random.choice(first_name_list)
    name = f_name + random.choice([GBK2312(), '']) + GBK2312()
    return name

print(create_name())
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肛炮,隨后出現(xiàn)的幾起案子止吐,更是在濱河造成了極大的恐慌,老刑警劉巖侨糟,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碍扔,死亡現(xiàn)場離奇詭異,居然都是意外死亡秕重,警方通過查閱死者的電腦和手機不同,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溶耘,“玉大人二拐,你說我怎么就攤上這事〉时” “怎么了百新?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長庐扫。 經常有香客問我饭望,道長仗哨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任铅辞,我火速辦了婚禮厌漂,結果婚禮上,老公的妹妹穿的比我還像新娘斟珊。我一直安慰自己苇倡,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布囤踩。 她就那樣靜靜地躺著雏节,像睡著了一般。 火紅的嫁衣襯著肌膚如雪高职。 梳的紋絲不亂的頭發(fā)上钩乍,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音怔锌,去河邊找鬼寥粹。 笑死,一個胖子當著我的面吹牛埃元,可吹牛的內容都是我干的涝涤。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼岛杀,長吁一口氣:“原來是場噩夢啊……” “哼阔拳!你這毒婦竟也來了?” 一聲冷哼從身側響起类嗤,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤糊肠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后遗锣,有當地人在樹林里發(fā)現(xiàn)了一具尸體货裹,經...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年精偿,在試婚紗的時候發(fā)現(xiàn)自己被綠了弧圆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡笔咽,死狀恐怖搔预,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情叶组,我是刑警寧澤拯田,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站扶叉,受9級特大地震影響勿锅,放射性物質發(fā)生泄漏。R本人自食惡果不足惜枣氧,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一溢十、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧达吞,春花似錦张弛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至覆糟,卻和暖如春刻剥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滩字。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工造虏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人麦箍。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓漓藕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挟裂。 傳聞我的和親對象是個殘疾皇子享钞,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350