作业——02 字符串、文件操作,英文词频统计预处理

作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2646


1.字符串操作:

  • 解析身份证号:生日、性别、出生地等。
# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

ID=input('请输入十八位身份证号码: ')
if len(ID)==18:
  print("你的身份证号码是 "+ID)
else:
  print("错误的身份证号码")
 
ID_add=ID[0:6]
ID_birth=ID[6:14]
ID_sex=ID[14:17]
ID_check=ID[17]
 
#ID_add是身份证中的区域代码,如果有一个行政区划代码字典,就可以用获取大致地址#
 
year=ID_birth[0:4]
moon=ID_birth[4:6]
day=ID_birth[6:8]
print("生日: "+year+'年'+moon+'月'+day+'日')
 
if int(ID_sex)%2==0:
  print('性别:女')
else:
  print('性别:男')

  运行结果图如下:

  • 凯撒密码编码与解码。
def change(c,i):
    c = c.lower()
    num = ord(c)
    if num >= 97 and num <= 122:
        num = 97 + ((num - 97) + i) % 26
    return chr(num)


def kaisa_jiami(string,i):
    string_new = ''
    for s in string:
        string_new += change(s,i)
    print(string_new)
    return string_new

def kaisa_jiemi(string):
    for i in range(25):
        print('
', i, '
')
        i += 1
        kaisa_jiami(string,i)


def main():
    print('请选择需要的操作:')
    print('1:凯撒加密')
    print('2:凯撒解密')
    choice = input()
    if choice == '1':
        string = input('请输入需要加密的字符串:')
        num = int(input('请输入需要偏移的位数:'))
        kaisa_jiami(string,num)
    elif choice == '2':
        string = input('请输入需要解密的字符串:')
        kaisa_jiemi(string)
    else:
        print('输入错误,请重试!')
        main()

if __name__ == '__main__':
    main()

  运行结果图如下所示:

  • 网址观察与批量生成。
for i in range(2,6):
url='http://xybgs.gzcc.cn/html/xuxigg/{}.html'.format(i);
print(url);

  运行结果如图所示:

2.英文词频统计预处理:

  • 下载一首英文的歌词或文章或小说,保存为utf8文件。
  • 从文件读出字符串。
  • 将所有大写转换为小写
  • 将所有其他做分隔符(,.?!)替换为空格
  • 分隔出一个一个的单词
  • 并统计单词出现的次数。
#文件操作
def readFile():
    f=open("speech.txt");
    text=f.read();
    print(text);
    f.close();
    return text;

#使用空格替换标点符号
t=readFile().lower();
article = t.replace(",","").replace(".","").replace(":","").replace(";","").replace("?","")


#大写字母转换成小写字母
exchange = article.lower();
print(exchange)
print('
')

#生成单词列表
list = exchange.split()
print(list)

#生成词频统计
dic = {}
for i in list:
    count = list.count(i)
    dic[i] = count
print(dic)
'''
#排除特定单词
word = {'and','the','with','in','by','its','for','of','an','to'}
for i in word:
    del(dic[i])
print(dic)
'''
#排序
dic1= sorted(dic.items(),key=lambda d:d[1],reverse= True)
print(dic1)
print('
')

#输出词频最大的前十位单词
for i in range(10):
    print(dic1[i])

  结果如图所示:

原文地址:https://www.cnblogs.com/linxiLYH/p/10469207.html