隨機生成一個兩個漢字的合成詞

# -*- coding: utf-8 -*-
import random

class GenNickName:
    def __init__(self,num=30):
        #print "__init__"
        self.list=[]
        self.wordNum=0
        self.num=num
        self.nickNames=[]

    def getWordsFromTxt(self):
        file=open("source.txt","r")
        for l in file.readlines():
            #print "l: " +l
            line=l.decode("gbk").split()
            #print len(line)
            for e in line:
                #print e
                self.list.append(e)
        #print len(self.list)
        #print "l: %s" %self.list
        file.close()

    def genNickName(self):
        self.getWordsFromTxt()
        self.wordNum=len(self.list)-1
        for k in range(self.num): 
            i=random.randint(0, self.wordNum)
            j=random.randint(0, self.wordNum)
            #print len(self.list)
            #print "one nick name : "+self.list[i]+self.list[j]
            self.nickNames.append(self.list[i]+self.list[j])

    def showNames(self):
        print "All nicks names:"
        print "*"*50
        i=0
        for name in self.nickNames:
            print name,
            i=i+1
            if(i%10==0):
                print " "       
        print "*"*50
            
if __name__=="__main__":
    g = GenNickName(50)
    g.genNickName()
    g.showNames()

代碼如上所示。python

實現比較簡單,主要難點在於,從txt文件中讀取漢字後的字符分割。正常狀況下,用.split函數便可,可是文中使用的是漢字,而漢字的編碼是gbk,因此在分割以前先要用gbk解碼。app

每次運行,能夠生成50個隨機組合的詞,以下所示:dom

All nicks names:
**************************************************
啊由 爐痼 柱著 摩辮 押至 炎奇 養識 勵賭 類外 通朝  
馮又 郊祥 潛澤 撾打 僑篡 殺拾 傳曰 崩朕 紛慎 畔誘  
墳趁 晨宋 名麟 癢盟 澳遼 粒紫 汛喃 國薩 娥畜 濟錘  
稿俘 砌產 冤映 桅託 君蠟 勒玲 肯模 酮舒 蛋陪 屁謙  
溼氰 梗煎 諸鄒 捍佃 音撞 革色 造菜 獵吉 字捻 報碧  
**************************************************
相關文章
相關標籤/搜索