码迷,mamicode.com
首页 > 编程语言 > 详细

python (二)正则和文件处理

时间:2017-07-27 16:35:04      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:text   划线   pass   对象   mdx   空格   pytho   bin   常见   

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.文本处理

上个月做了一家做自然语言的公司的笔试题,我觉得题目还是有点意思的,要求如下:

  1. 去除所有标点符号;需要去除的标点符号是如下几种: , . ! ? : ;

  2. 所有数字包括小数,整数,负数都替换成一个替代字符串: ==NUMBER==

  3. 所有大写字母全部转成小写

  4. 去除每行起始的所有空格

  5. 连续的空格缩短为单独的空格(除每行起始连续空格,见以上规则4

  6. 如果经过上述处理导致一行为空,则在此行处放置标记字符串:[REMOVED] 

文本有点长,我放在网盘上了:https://pan.baidu.com/s/1o8mdXd4

python (二)正则和文件处理

标签:text   划线   pass   对象   mdx   空格   pytho   bin   常见   

原文地址:http://www.cnblogs.com/HugoLester/p/7243343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!