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

5.1.3 案例精选

时间:2018-04-07 12:45:26      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:生成   获取   是的   open   .com   readline   itertools   python   个人   

  5-1 编写函数实现字符串加密和解密,循环使用指定秘钥,采用简单的异或算法。

 

 1 def crypt(source,key):
 2     from itertools import cycle
 3     result = ‘‘
 4     temp=cycle(key)
 5 
 6     for ch in source:
 7         result = result + chr( ord(ch)^ord(next(temp)) )
 8 
 9     return result
10 
11 source = Shandong Institute of Business and Technology
12 key = Dong Fuguo
13 
14 print(Before Encrypted:,source)
15 encrypted = crypt(source,key)
16 print(After Encrypted:,encrypted)
17 decrypted=crypt(encrypted,key)
18 print(After Decrypted:,decrypted)
19 
20 #Before Encrypted: Shandong Institute of Business and Technology
21 #After Encrypted:     D) U&*T3U "O,S/d  + Y
22 #After Decrypted: Shandong Institute of Business and Technology

 

 

  5-2 编写程序,生成大量随机信息

    本例代码演示了如何使用Python标准库random来生成随机数据,这在需要获取大量数据来测试或演示软件的时候非常有用,不仅能真实展示软件功能或算法,还可以避免泄露真实数据或者引起不必要的争议。

  1 import random
  2 import string
  3 import codecs
  4 
  5 #常用汉字 Unicode 编码表(部分),完整列表详见配套源代码
  6 stringBase = \u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba
  7 
  8 #转换为汉字
  9 stringBase = ‘‘.join(stringBase.split(\\u))
 10 #print(stringBase)  #的一了是我不在人
 11 
 12 #获取邮箱
 13 def getEmail():
 14 
 15     #常见域名后缀,可以随意扩展该列表
 16     suffix = [.com,.org,.net,.cn]
 17     characters = string.ascii_letters + string.digits+_
 18 
 19     #获取邮箱用户名
 20     username = ‘‘.join((random.choice(characters) for i in range(random.randint(6,12))))
 21 
 22     #获取邮箱域名
 23     domain = ‘‘.join((random.choice(characters) for i in range(random.randint(3,6))))
 24 
 25     return username + @ + domain + random.choice(suffix)
 26 
 27 #获取手机号码
 28 def getTelNo():
 29     return ‘‘.join((str(random.randint(0,9)) for i in range(11)))
 30 
 31 #获取用户名或地址
 32 def getNameOrAddress(flag):
 33     ‘‘‘flag=1 表示返回随机姓名,flag = 0表示返回随机地址‘‘‘
 34     result = ‘‘
 35     if flag == 1:
 36         #大部分中国人的姓名为2-4个汉字
 37         rangestart,rangeend = 2 , 5
 38     elif flag ==0:
 39         #假设地址在10-31个汉字之间
 40         rangestart,rangeend = 10,31
 41     else:
 42         print(flag must be 1 or 0)
 43         return ‘‘
 44 
 45     for i in range(rangestart,rangeend):
 46         result += random.choice(stringBase)
 47 
 48     return result
 49 
 50 def getSex():
 51     return random.choice((,))
 52 
 53 def getAge():
 54     return str(random.randint(18,100))
 55 
 56 def main(filename):
 57     with codecs.open(filename,w,utf-8) as fp:
 58         fp.write(Name,-Sex,Age,---TelNo--,-------------------Address----------------,-----Email----- \n)
 59 
 60         #随机生成200个人的信息
 61         for i in range(10):
 62             name = getNameOrAddress(1)
 63             sex = getSex()
 64             age = getAge()
 65             tel = getTelNo()
 66             address = getNameOrAddress(0)
 67             email = getEmail()
 68             line = ,.join([name,sex,age,tel,address,email]) + \n
 69             fp.write(line)
 70 
 71 
 72 def output(filename):
 73     with codecs.open(filename,r,utf-8) as fp:
 74         while True:
 75             line = fp.readline()
 76             if not line:
 77                 return
 78             line = line.split()
 79             for i in line:
 80                 print(i,end=,)
 81             print()
 82 
 83 if __name__ == __main__:
 84     filename = infomation.txt
 85     main(filename)
 86     output(filename)
 87 
 88 ‘‘‘
 89 Name,-Sex,Age,---TelNo--,-------------------Address----------------,-----Email-----,
 90 是的在,男,35,40020447105,一我了了我是是人了的了我在我的不了的人了我,UkLalG@QXPumc.org,
 91 一是我,女,44,28056977003,了我人不在的人不不是的在不人我是我不人一的,uC3g_aobRjYW@VTj0K.org,
 92 了在在,女,20,08361670393,人一了了是是在一是的人一在不在是不的了了是,3_rhRc@5zlTNw.com,
 93 一一是,女,68,99960031767,了的一我我人的在我的一一不了是了了我在人不,149JD3ypI@qZ0N.net,
 94 一人了,男,55,33382346683,人的我在不人了了是我是是了了在我人在我一我,x3QOnGKTi3i@qPp.cn,
 95 的了不,男,95,90126113931,一我人了的不人我在了的了了人人是不了的一的,cvwHge2fi5@Eh2RE.org,
 96 一是是,女,26,78260102051,的人人我了是的的了是了我人不的一不人我是我,SNxGHWNBcId@3dTR.net,
 97 的的人,男,30,73940532426,的一在人是了的不了是不的在在人不人是在我了,XsbeyCjIilmk@5ob.com,
 98 不在的,女,61,10389727006,了人我了的了的不了在一一我是是我了人在是在,HwzAnt18plb@ejMtG.org,
 99 是不了,男,90,59993303692,人是了在了了一人人是我是是的我一我了了是一,Qa2ovqR9i@qfMwX.com,
100 ‘‘‘

  拓展知识:Python扩展库jieba和snownlp很好地支持了中文分词,可以使用pip命令进行安装。在自然语言处理领域经常需要对文字进行分词,分词的准确度直接影响了后续文本处理和挖掘算法的最终效果。

  拓展知识:Python扩展库pypinyin支持汉字到拼音的转换,并且可以和分词扩展库配合使用。

 

5.1.3 案例精选

标签:生成   获取   是的   open   .com   readline   itertools   python   个人   

原文地址:https://www.cnblogs.com/avention/p/8729590.html

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