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

1.字符串操作:

  • 解析身份证号:生日、性别、出生地等。
  • 代码:
def check_idcard(id_card):
    if id_card is None or id_card.strip() == '':
        print('请输入身份证信息')
        exit(-1)
    if len(id_card) != 18:
        print('暂时只支持18位身份证的验证')
        exit(-1)
    str = """
    440000     广东省 
    440100   广州市
    440103   荔湾区
    440104   越秀区
    440105   海珠区
    440106   天河区
    440111   白云区
    440112   黄埔区
    440113   番禺区
    440114   花都区
    440115   南沙区
    440116   萝岗区
    440183   增城区
    440184   从化区
    440200   韶关市
    440203   武江区
    440204   浈江区
    440205   曲江区
    440222   始兴县
    440224   仁化县
    440229   翁源县
    440232   乳源县
    440233   新丰县
    440281   乐昌市
    440282   南雄市
    440300   深圳市
    440303   罗湖区
    440304   福田区
    440305   南山区
    440306   宝安区
    440307   龙岗区
    440308   盐田区
    440400   珠海市
    440402   香洲区
    440403   斗门区
    440404   金湾区
    440500   汕头市
    440507   龙湖区
    440511   金平区
    440512   濠江区
    440582   潮阳区
    440514   潮南区
    440515   澄海区
    440523   南澳县
    """
    address= id_card[0:6]
    birth = id_card[6:14]
    sex = id_card[14:17]
    year = birth[0:4]
    moon = birth[4:6]
    day = birth[6:8]

    print("生日: " + year + '' + moon + '' + day + '')
    if int(sex) % 2 == 0:
        print('性别:女')
    else:
        print('性别:男')
    print('您的地址号码是:',format(address),"出生地方:"+str[str.find(address)+9:str.find(address)+12])

if __name__ == '__main__':
    check_idcard('440582199708030964')

运行结果:

  • 凯撒密码编码与解码
  • 代码:
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('\n', i, '\n')
        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(0,6):
    url='http://news.gzcc.cn/html/xiaoyuanxinwen/1.html'.format(i)
    print(url)

运行结果:

2.英文词频统计预处理

  • 下载一首英文的歌词或文章或小说。
  • 将所有大写转换为小写
  • 将所有其他做分隔符(,.?!)替换为空格
  • 分隔出一个一个的单词
  • 并统计单词出现的次数。

代码:

f=open('ctt.txt','r')
text=f.read()
f.close()
text=text.lower()
sep=',.?!:;_'
for s in sep:
    text=text.replace(s,' ')
print(text.split())
word=input('输入要查询的单词的次数')
print(text.count(word))

运行结果:

3.文件操作

  • 同一目录、绝对路径、相对路径
  • 凯撒密码:从文件读入密函,进行加密或解密,保存到文件。
  • 词频统计:下载一首英文的歌词或文章或小说,保存为utf8文件。从文件读入文本进行处理。

 同一路径:

f=open('ctt.txt','r',encoding='utf8') <br>text=f.read()<br> print(text)<br> f.close()

绝对路径:

f=open(r'D:\ctt.txt','r',encoding='utf8') <br>text=f.read() <br>print(text) <br>f.close()

相对路径:

f=open('D:\\ctt.txt','r',encoding='utf8') <br>text=f.read()<br> print(text)<br> f.close()

凯撒密码:

file=open("caesar.txt")
caesar=file.read()
print("加密前的密码:",caesar)
cipher='';
jiemi='';
for i in caesar:
cipher=cipher+chr(ord(i)+3);
print("加密后的密码:",cipher)
file=open("cipher.txt",'w')
file.write(cipher)
file.close()

运行结果:

4.函数定义

  • 加密函数
 def JiaMi(dode) :
       code1 = ''
       for i in code :
            i = i + chr(ord(i)+3)
       return i
  • 解密函数
def JieMi(code) :
       code1 = ''
       for i in code :
            i = i + chr(ord(i)-3)
       return i
  • 读文本函数
def read(article) : 
     file = open(article, 'r',encoding = 'utf8')
     return file.read()

 

posted @ 2019-03-11 16:28  TILY  阅读(212)  评论(0编辑  收藏  举报