码迷,mamicode.com
首页 > 其他好文 > 详细

随机生成一个两个汉字的合成词

时间:2015-05-05 22:08:14      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

# -*- 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()

代码如上所示。

实现比较简单,主要难点在于,从txt文件中读取汉字后的字符分割。正常情况下,用.split函数即可,但是文中使用的是汉字,而汉字的编码是gbk,所以在分割之前先要用gbk解码。

每次运行,可以生成50个随机组合的词,如下所示:

All nicks names:
**************************************************
啊由 炉痼 柱著 摩辫 押至 炎奇 养识 励赌 类外 通朝  
冯又 郊祥 潜泽 挝打 侨篡 杀拾 传曰 崩朕 纷慎 畔诱  
坟趁 晨宋 名麟 痒盟 澳辽 粒紫 汛喃 国萨 娥畜 济锤  
稿俘 砌产 冤映 桅托 君蜡 勒玲 肯模 酮舒 蛋陪 屁谦  
湿氰 梗煎 诸邹 捍佃 音撞 革色 造菜 猎吉 字捻 报碧  
**************************************************


随机生成一个两个汉字的合成词

标签:

原文地址:http://my.oschina.net/u/811744/blog/411040

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!