zoukankan      html  css  js  c++  java
  • 字符串操作、文件操作,英文词频统计预处理

    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('
    ', 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(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()
  • 相关阅读:
    阿里双11,如何实现每秒几十万的高并发写入
    记住:永远不要在 MySQL 中使用 UTF-8
    史上最烂的项目:苦撑 12 年,600 多万行代码
    除了不要 SELECT * ,使用数据库还应知道的11个技巧!
    厉害了,为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
    请停止学习框架
    基于 MySQL 主从模式搭建上万并发的系统架构
    JS获取节点
    JS函数
    JS
  • 原文地址:https://www.cnblogs.com/Tily/p/10497307.html
Copyright © 2011-2022 走看看