首页 > 代码库 > python (二)正则和文件处理
python (二)正则和文件处理
1.编写验证email的正则表达式,邮箱名可以是英文字母或数字或-,_符号,邮箱后缀网址名可以是字母或数字,域名可以是com、org、edu
例如: 1111Hugo_@lester007.com即为合法的email地址
(1)match()
方法判断是否匹配,如果匹配成功,返回一个Match
对象,否则返回None
。常见的判断方法就是:
test = ‘用户输入的字符串‘
if re.match(r‘正则表达式‘, test):
print(‘ok‘)
else:
print(‘failed‘)
#!usr/bin/dev python #coding:utf-8 import re email = ‘1111Hugo_@lester007.com‘ f = re.match(r‘()@().(com|edu|org)‘,email) print f
这是首先我想到的代码,然后匹配用户名
f = re.match(r‘(\w+[-\w*]*)@([\w]*).(com|edu|org)‘,email)
#预定义字符集,可以写在[...]中
\d 代表[0-9], a\dc a1c
\D 非数字, a\Dc abc
\s 空格, a\sc a c
\S 非空字符 a\Sc aSc
\w 单词字符[a-zA-Z0-9] a\wc a1c,aec,aXc都可以匹配到
\W 非单词字符 a\Wc a c,a#c,a^c 就可以匹配到了
#数量词,可以用在字符或(...)之后。
* 匹配前一个字符0或无限次
+ 匹配前一个字符1或无限次
? 0或1次
{m} 匹配前一个字符m次 ab{2}c abbc 与预定义字符集结合起来比如 f=re.findall(r‘(\w+\s+)‘,str)就可以找到非行首的多个空格了
{m,n} 匹配一个字符m至n次,at{3,4}c 就会匹配到 atttc和attttc ,而不会匹配到atc 或者 atttttc
| 代表表达式两侧的任意匹配一个
2.利用随机函数产生一个用户的用户名密码,并利用文件将用户名和密码保存下来。
用户名一般是8-32位的,允许包含下划线,密码通常是8-16位,允许包含特殊字符
#!usr/bin/dev pyhton #coding:utf-8 import random import hashlib runum = random.randint(8,32) print runum us = 0 usrname = ‘‘ for us in range(runum): us+= 1 rs = random.choice(‘qwertyuiopasdfghjklzxcvbnm1234567890_‘) usrname += rs print usrname pword = ‘‘ rpnum = random.randint(8,16) ps = 0 for ps in range(rpnum): ps += 1 pw = random.choice(‘qwertyuiopasdfghjklzxcvbnm1234567890!@#$%^&*()-=[]\\|}{;:""?><,.\‘`~‘) pword += pw print pword
3.密码没有加密,将密码使用md5库处理,并保存。
md5加密处理库
import hashlib
hashlib.md5(password).hexdigest()
上面已经写了,如何生成随机用户名和密码,就不重新写了,只写如何保存md5.
import hashlib
md5pword = hashlib.md5(pword).hexdigest() print md5pword with open(‘usrmd5p.txt‘,‘w‘) as f: f.write(usrname) f.write(‘\n‘) f.write(pword) f.write(‘\n‘) f.write(md5pword) f.close()
4.文本处理
上个月做了一家做自然语言的公司的笔试题,我觉得题目还是有点意思的,要求如下:
-
去除所有标点符号;需要去除的标点符号是如下几种: , . ! ? : ;
-
所有数字包括小数,整数,负数都替换成一个替代字符串: ==NUMBER==
-
所有大写字母全部转成小写
-
去除每行起始的所有空格
-
连续的空格缩短为单独的空格(除每行起始连续空格,见以上规则4)
-
如果经过上述处理导致一行为空,则在此行处放置标记字符串:[REMOVED]
文本有点长,我放在网盘上了:https://pan.baidu.com/s/1o8mdXd4<style>h2 { margin-top: 0.46cm; margin-bottom: 0.46cm; direction: ltr; line-height: 173%; text-align: justify; page-break-inside: avoid; orphans: 0; widows: 0 } h2.western { font-family: "DengXian Light", serif; font-size: 16pt } h2.cjk { font-family: "DengXian Light"; font-size: 16pt } h2.ctl { font-family: ; font-size: 16pt } p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orphans: 0; widows: 0 }</style>
python (二)正则和文件处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。