Python核心編程-第十五章-習題

1.正則表達式: r"[bh][aiu]t"python

2.正則表達式:r"\w+ \w+"正則表達式

3.正則表達式:r"\w+, [\w]"app

4.正則表達式:r"[A-Z_a-z][\w_]*"dom

5.正則表達式:r"\d+ [a-zA-z]+[a-zA-z ]*"code

6.正則表達式:r"www\.\w+\.(com|edu|net)"utf-8

7-8.正則表達式:r"^-?(\d*)|(0[0-7]*)|(0[xX][0-9a-fA-F]+)$"get

9.正則表達式:r"^\d+\.\d*$"string

10.正則表達式:r"(\d+(\.\d*)?)?[\+-]?\d+j"it

11.正則表達式:r"[a-zA-z][\w_]*@\w[\w-]*\.[a-zA-z]{2,}"    #假設郵件前綴能夠包含字母、數字和下劃線,且以字母開頭class

13.

# -*- coding: utf-8 -*-

import re

def gettype(val):
    typestr = str(type(val))
    mytype = re.match(r"", typestr).group(1)
    systype = type(val).__name__
    if mytype == systype:
        print u"類型是:", mytype
    else:
        print u"錯誤"

14.  r"1[0-2]"

15.  A. r"([0-9]{4}-?[0-9]{6}-?[0-9]{5})|(([0-9]{4}-?){4})"

      B.

def CheckCardNum(card_num):
    "檢驗卡號的有效性"
    import re 
    if not isinstance(card_num, str): card_num = str(card_num)
        
    m = re.match(r"([0-9]{4}-?[0-9]{6}-?[0-9]{5})|(([0-9]{4}-?){4})", card_num)
    if m is not None:
        if '-' in card_num:
            card_num = card_num.replace('-','')
        sum = 0          
        if len(card_num) == 15:
            for i, num in enumerate(card_num):
                num = int(num)
                if (i+1)%2:
                    sum += num
                else:
                    num=num*2 if num*2 < 9 else num*2-9
                    sum += num
        else:
            for i, num in enumerate(card_num):
                num = int(num)
                if (i+1)%2:
                    num=num*2 if num*2 < 9 else num*2-9
                    sum += num 
                else:
                    sum += num
        if sum%10 == 0:
            print u"卡號輸入正確"
    else:
        print u"請輸入正確的卡號"

16.  

#!/usr/bin/env python

from random import randint, choice
from string import lowercase
from sys import maxint
from time import ctime

f = open(r"E:\code\Core Python Programming\15\redata.txt", 'w')

doms = ('com', 'edu', 'net', 'org', 'gov')

for i in range(randint(5, 10)):
    dtint = randint(0, maxint-1)
    dtstr = ctime(dtint)
    
    shorter = randint(4, 7)
    em = ''
    for j in range(shorter):
        em += choice(lowercase)
        
    longer = randint(shorter, 12)
    dn = ''
    for j in range(longer):
        dn += choice(lowercase)
        
    eachline = '%s::%s@%s.%s::%d-%d-%d' % (dtstr, em,
        dn, choice(doms), dtint, shorter, longer)  
    
    f.writelines(eachline+'\n')
f.close()

17.  

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from random import randint, choice
from string import lowercase
from sys import maxint
from time import ctime

f = open(r"E:\code\Core Python Programming\15\redata.txt", 'w')

doms = ('com', 'edu', 'net', 'org', 'gov')

for i in range(randint(5, 10)):
    dtint = randint(0, maxint-1)
    dtstr = ctime(dtint)
    
    shorter = randint(4, 7)
    em = ''
    for j in range(shorter):
        em += choice(lowercase)
        
    longer = randint(shorter, 12)
    dn = ''
    for j in range(longer):
        dn += choice(lowercase)
        
    eachline = '%s::%s@%s.%s::%d-%d-%d' % (dtstr, em,
        dn, choice(doms), dtint, shorter, longer)   
    
    f.writelines(eachline+'\n')

f.close()
weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
f = open(r"E:\code\Core Python Programming\15\redata.txt", 'r')
datas = f.readlines()
Montimes, Tuetimes, Thutimes, Wedtimes, Fritimes, Sattimes, Suntimes = 0, \
    0, 0, 0, 0, 0, 0
times = {'Mon': Montimes, 'Tue': Tuetimes, 'Wed': Wedtimes, 'Thu': Thutimes, \
         'Fri': Fritimes, 'Sat': Sattimes, 'Sun': Suntimes}
for data in datas:
    for weekday in times:
        if weekday in data:
            times[weekday] += 1
            break
    
for weekday in weekdays:
    print u"%s 出現的次數時:%d" % (weekday, times[weekday])

18.

#!/usr/bin/env python
# -*- coding: utf-8 -*-


from random import randint, choice
from string import lowercase
from sys import maxint
from time import ctime
import re

f = open(r"E:\code\Core Python Programming\15\redata.txt", 'w')

doms = ('com', 'edu', 'net', 'org', 'gov')

for i in range(randint(5, 10)):
    dtint = randint(0, maxint-1)
    dtstr = ctime(dtint)
    
    shorter = randint(4, 7)
    em = ''
    for j in range(shorter):
        em += choice(lowercase)
        
    longer = randint(shorter, 12)
    dn = ''
    for j in range(longer):
        dn += choice(lowercase)
        
    eachline = '%s::%s@%s.%s::%d-%d-%d' % (dtstr, em,
        dn, choice(doms), dtint, shorter, longer)  
    
    f.writelines(eachline+'\n')
f.close()

f = open(r"E:\code\Core Python Programming\15\redata.txt", 'r')
check = True
patt = r"([\w :]{24})[a-z@\.:]+(\d+).*"

flines = f.readlines()
for eachline in flines:
    datadtstr = re.match(patt, eachline).group(1)
    datadtint = re.match(patt, eachline).group(2)
    if datadtstr == ctime(int(datadtint)):
        continue
    else:
        check = False
        break

if check:
    print u"數據無缺!"
else:
    print u"數據有誤!"

19.  patt = r"[\w :]{24}"        re.search()

20.  patt = r"[a-z]*@[a-z\.]*"   re.search()

21.  patt = r"[A-za-z ]{4}([a-zA-Z]{3})"   (re.search(patt, string).group(1))

22.  patt = r"\d{4}:"    re.search(patt, string).group()[:4]

23.  patt = r"(\d{2}:){2}\d{2}"  re.search()

24-25.  patt = r"\b[a-z]+\b"   re.findall()

26.   

newlines = []
f = open(r"redata.txt", 'r')
for eachline in f.readlines():
    newline = re.sub(r'\b[a-z]+@[a-z\.]+', 'myemail@gmail.com', eachline)
    newlines.append(newline)
f.close()
f = open(r"redata.txt", 'w')
f.writelines(newlines)

27.

f = open(r"redata.txt", 'r')
for eachline in f.readlines():
    month_day = re.findall(r'\b[A-Z][a-z]{2}\b', eachline)
    month = month_day[1]
    day = month_day[0]
    year = re.search(r'(\d{4}):', eachline).group(1)
    print '%s %s, %s' % (month, day, year)

28.  patt = r"(\d{3}-)?\d{3}-\d{4}"

29.  patt = r"((\d{3}-)|(\(\d{3}\)))?\d{3}-\d{4}"

相關文章
相關標籤/搜索