字符串操作、文件操作,英文词频统计预处理
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()