标签:数据 short 匹配 com drive 网址 ctime txt 名称
1. 识别后续的字符串:“bat”,“bit”,“but”,“hat”,“hit”或者“hut”。
[bh][aiu]t
2. 匹配由单个空格分割的任意单词对,也就是姓和名。
[A-Za-z]+\s[A-Za-z]+
3. 匹配由单个逗号和单个空白符分隔的任何单词和单个字母,如姓氏的首字母
[A-Za-z]+,\s[A-Za-z]
4. 匹配所有的有效的Python标识符集合
[A-Za-z_]\w+ # 匹配任意以字母和下划线开头,标识符可以包括字母,下划线和数字。
5. 根据美国接到地址格式,匹配街道地址。美国街道地址使用如下格式:1180 Bordeaux Drive。使你的正则表达式足够灵活,以支持多单词的街道名称,如3120 De la Cruz Boulevard
\d+[a-zA-Z\s]+
6. 匹配以“www”起始且以“.com”结尾的简单Web域名:例如,www://www.yahoo.com。
^www[^\s]+[com|edu|net]$
7. 匹配所有能够表示Python整数的字符串集
[-+]?\d+ # 有正负符号或无
8. 匹配所有能够表示Python长整数的字符串集
[-+]?\d+[lL] # 长整型,整数后面跟大写或小写的L
9. 匹配所有能够表示Python浮点数的字符串集
[-+]?\d+\.\d*
10. 表示所有能够表示Python复数的字符集
-?\d+\+[\+-]\d+j
11. 匹配所有能够表示有效电子邮件的集合
[^\s]+@(\w+\.?)+
12. 匹配所有能够表示有效网址的集合(URL)
(http://([A-Za-z0-9\-]+\.?)+)
13. 创建一个能从字符串中提取实际类型名称的正则表达式。函数将对于<type ‘int‘>字符串返回int
<type\s\‘(\w+)\‘>
14. 处理日期,常见一个正则表达式来表示标准日历中剩余三个月的数字
1[012]
15. 处理信用卡号码
(\d{4}-\d{6}-\d{5}|\d{4}-\d{4}-\d{4}-\d{4})
16. 为gendata.py更新代码,是数据直接输出到redata.txt而不是屏幕
# !/usr/bin/env python # gendata.py from random import randrange, choice from string import ascii_lowercase as lc # from sys import int from time import ctime tlds = (‘com‘, ‘edu‘, ‘net‘, ‘org‘, ‘gov‘) with open(‘path\redata.txt‘, ‘w‘) as fp: for i in range(randrange(5,11)): dtint = randrange(2**32) # pick date dtstr = ctime(dtint) # date string llen = randrange(4, 8) # login is shorter login = ‘‘.join(choice(lc) for j in range(llen)) dlen = randrange(llen, 13) # domain is longer dom = ‘‘.join(choice(lc) for j in range(dlen)) print(‘%s::%s@%s.%s::%d-%d-%d‘ % (dtstr, login, dom, choice(tlds), dtint, llen, dlen)) str = ‘%s::%s@%s.%s::%d-%d-%d‘ % (dtstr, login, dom, choice(tlds), dtint, llen, dlen) fp.write(str+‘\n‘)
17. 判断redata.txt中一周的每一天出现的次数
import re week = {"Mon": 0, "Tue": 0, "Wed": 0, "Thu": 0, "Fri": 0, "Sat": 0, "Sun": 0} with open(‘path\redata.txt‘, ‘r‘) as fp: data = fp.readlines() for line in data: day = re.match(‘^\w{3}‘, line) key = day.group() week[key] = week[key] + 1 print(week)
18. 提取
# 判断数据是否损坏Sat Jun 22 09:14:03 1985:: import re with open(‘path\redata.txt‘, ‘r‘) as fp: data = fp.readlines() for line in data: time = re.match(‘^\w{3}\s\w{3}\s{1,2}\d{1,2}\s\d{2}:\d{2}:\d{2}\s\d{4}‘, line) if time is not None: print(‘未损毁‘) else: print(‘存在数据损毁‘)
19-25. 创建正则表达式
# 19-27练习 import re times = [] emails = [] months = [] years = [] clocks = [] lnames = [] dnames = [] with open(‘path\redata.txt‘, ‘r‘) as fp: data = fp.readlines() for line in data: time = re.match(‘(\w{3}\s(\w{3})\s{1,2}\d{1,2}\s(\d{2}:\d{2}:\d{2})\s(\d{4}))::((\w+)@((\w+\.?)+))::‘, line) # 提取时间戳 if time is not None: times.append(time.group(1)) # 提取完整时间戳 months.append(time.group(2)) # 提取月份 years.append(time.group(4)) # 提取年份 clocks.append(time.group(3)) # 提取时间 emails.append(time.group(5)) # 提取邮件 lnames.append(time.group(6)) # 提取登录名 dnames.append(time.group(7)) # 提取域名 print(‘完整时间:‘, times) print(‘月份:‘, months) print(‘年份:‘, years) print(‘时间点:‘, clocks) print(‘邮件地址:‘, emails) print(‘登录名:‘, lnames) print(‘域名:‘, dnames)
结果:
26. 使用自己的电子邮件地址替换没一行数据中的电子邮件地址
import re with open(‘path\redata2.txt‘, ‘r‘) as fp: data = fp.readlines() for line in data: print(re.sub(‘\w+@(\w+.?)+‘, ‘lullaby@163.com‘, line).rstrip())
结果:
27. 从时间戳中提取月、日、年,然后以“月、日、年”的格式。
import re f = open(‘redata.txt‘,‘r‘) with open(‘path\redata2.txt‘, ‘r‘) as fp: data = fp.readlines() for line in data: m = re.match(‘^\w{3}\s(\w{3})\s{1,2}(\d{1,2})\s\d{2}:\d{2}:\d{2}\s(\d{4})‘, line) print(‘%s,%s,%s‘ % (m.group(1), m.group(2), m.group(3)))
结果:
标签:数据 short 匹配 com drive 网址 ctime txt 名称
原文地址:https://www.cnblogs.com/panpanblog/p/8965004.html