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