Python程序练习(2)

#!/usr/bin/env python3
#find_sender.py
import fileinput, re 
pat = re.compile('From: (.*) <.*?>$') 
for line in fileinput.input(): 
    m = pat.match(line) 
    if m: 
        print(m.group(1))
def sort_id():
    data = {'CVD:000002': 'CVD:000001', 'CVD:000004': 'CVD:000001', 'CVD:000007': 'CVD:000006',
            'CVD:000008': ['CVD:000007', 'CVD:000006'], 'CVD:000010': 'CVD:000009',
            'CVD:000011': ['CVD:000010', 'CVD:000009'], 'CVD:000014': 'CVD:000074', 'CVD:000024': 'CVD:000125',
            'CVD:000045': 'CVD:000068', 'CVD:000060': ['CVD:000077', 'CVD:000076'], 'CVD:000067': 'CVD:000371',
            'CVD:000071': 'CVD:000015', 'CVD:000077': 'CVD:000076', 'CVD:000083': 'CVD:000099',
            'CVD:000084': ['CVD:000083', 'CVD:000099'], 'CVD:000086': 'CVD:000085', 'CVD:000088': 'CVD:000087',
            'CVD:000096': 'CVD:000095', 'CVD:000097': 'CVD:000095', 'CVD:000104': 'CVD:000103',
            'CVD:000108': 'CVD:000022', 'CVD:000116': 'CVD:000022', 'CVD:000117': 'CVD:000022',
            'CVD:000144': 'CVD:000065', 'CVD:000146': 'CVD:000065', 'CVD:000149': 'CVD:000065',
            'CVD:000154': 'CVD:000153', 'CVD:000158': 'CVD:000157', 'CVD:000159': 'CVD:000157',
            'CVD:000246': 'CVD:000506', 'CVD:000364': 'CVD:000018', 'CVD:000370': 'CVD:000074',
            'CVD:000373': 'CVD:000371', 'CVD:000374': ['CVD:000373', 'CVD:000371'], 'CVD:000375': 'CVD:000371',
            'CVD:000383': 'CVD:000543', 'CVD:000384': 'CVD:000543', 'CVD:000385': 'CVD:000543',
            'CVD:000386': 'CVD:000000', 'CVD:000387': 'CVD:000000', 'CVD:000388': 'CVD:000000',
            'CVD:000389': ['CVD:000002', 'CVD:000001'], 'CVD:000390': ['CVD:000002', 'CVD:000001'],
            'CVD:000391': ['CVD:000002', 'CVD:000001'], 'CVD:000392': ['CVD:000002', 'CVD:000001'],
            'CVD:000393': ['CVD:000002', 'CVD:000001'], 'CVD:000394': ['CVD:000002', 'CVD:000001'],
            'CVD:000395': 'CVD:000022', 'CVD:000397': ['CVD:000014', 'CVD:000074'], 'CVD:000398': 'CVD:000013',
            'CVD:000399': 'CVD:000013', 'CVD:000401': 'CVD:000021', 'CVD:000450': 'CVD:000147',
            'CVD:000451': 'CVD:000001', 'CVD:000452': 'CVD:000001', 'CVD:000453': 'CVD:000001',
            'CVD:000454': 'CVD:000001', 'CVD:000455': ['CVD:000397', 'CVD:000014', 'CVD:000074'],
            'CVD:000456': 'CVD:000015', 'CVD:000457': 'CVD:000015', 'CVD:000458': ['CVD:000071', 'CVD:000015'],
            'CVD:000459': ['CVD:000071', 'CVD:000015'], 'CVD:000460': ['CVD:000071', 'CVD:000015'],
            'CVD:000461': ['CVD:000071', 'CVD:000015'], 'CVD:000462': ['CVD:000071', 'CVD:000015'],
            'CVD:000463': ['CVD:000071', 'CVD:000015'], 'CVD:000464': ['CVD:000071', 'CVD:000015'],
            'CVD:000465': ['CVD:000071', 'CVD:000015'], 'CVD:000466': ['CVD:000071', 'CVD:000015'],
            'CVD:000467': ['CVD:000071', 'CVD:000015'], 'CVD:000468': ['CVD:000071', 'CVD:000015'],
            'CVD:000469': ['CVD:000071', 'CVD:000015'], 'CVD:000470': ['CVD:000071', 'CVD:000015'],
            'CVD:000471': ['CVD:000071', 'CVD:000015'], 'CVD:000472': ['CVD:000071', 'CVD:000015'],
            'CVD:000473': ['CVD:000071', 'CVD:000015'], 'CVD:000474': ['CVD:000071', 'CVD:000015'],
            'CVD:000475': 'CVD:000115', 'CVD:000476': 'CVD:000022', 'CVD:000477': 'CVD:000021',
            'CVD:000478': ['CVD:000477', 'CVD:000021'], 'CVD:000479': ['CVD:000401', 'CVD:000021'],
            'CVD:000480': ['CVD:000401', 'CVD:000021'], 'CVD:000481': 'CVD:000021', 'CVD:000482': 'CVD:000021',
            'CVD:000483': 'CVD:000021', 'CVD:000484': ['CVD:000388', 'CVD:000000'],
            'CVD:000485': ['CVD:000387', 'CVD:000000'], 'CVD:000486': ['CVD:000002', 'CVD:000001'],
            'CVD:000487': ['CVD:000002', 'CVD:000001'], 'CVD:000488': ['CVD:000390', 'CVD:000002', 'CVD:000001'],
            'CVD:000489': 'CVD:000020', 'CVD:000490': 'CVD:000109', 'CVD:000491': 'CVD:000109',
            'CVD:000492': 'CVD:000109', 'CVD:000493': 'CVD:000018', 'CVD:000494': 'CVD:000018',
            'CVD:000495': 'CVD:000028', 'CVD:000496': 'CVD:000028', 'CVD:000497': 'CVD:000028',
            'CVD:000498': 'CVD:000028', 'CVD:000499': 'CVD:000085', 'CVD:000500': 'CVD:000085',
            'CVD:000501': 'CVD:000087', 'CVD:000502': 'CVD:000087', 'CVD:000504': 'CVD:000503',
            'CVD:000505': 'CVD:000503', 'CVD:000507': 'CVD:000506', 'CVD:000508': 'CVD:000412',
            'CVD:000509': 'CVD:000073', 'CVD:000510': 'CVD:000073', 'CVD:000511': 'CVD:000073',
            'CVD:000512': 'CVD:000073', 'CVD:000513': 'CVD:000073', 'CVD:000514': 'CVD:000073',
            'CVD:000515': 'CVD:000073', 'CVD:000516': 'CVD:000073', 'CVD:000517': 'CVD:000073',
            'CVD:000518': 'CVD:000073', 'CVD:000519': 'CVD:000073', 'CVD:000520': 'CVD:000073',
            'CVD:000521': 'CVD:000068', 'CVD:000522': 'CVD:000068', 'CVD:000523': 'CVD:000049',
            'CVD:000524': 'CVD:000049', 'CVD:000525': 'CVD:000049', 'CVD:000526': 'CVD:000049',
            'CVD:000527': ['CVD:000370', 'CVD:000074'], 'CVD:000528': ['CVD:000370', 'CVD:000074'],
            'CVD:000529': ['CVD:000370', 'CVD:000074'], 'CVD:000530': 'CVD:000371', 'CVD:000531': 'CVD:000371',
            'CVD:000532': 'CVD:000371', 'CVD:000533': 'CVD:000381', 'CVD:000534': 'CVD:000017',
            'CVD:000535': 'CVD:000072', 'CVD:000536': 'CVD:000072', 'CVD:000537': 'CVD:000072',
            'CVD:000538': 'CVD:000072', 'CVD:000539': 'CVD:000072', 'CVD:000540': 'CVD:000072',
            'CVD:000541': 'CVD:000072', 'CVD:000542': 'CVD:000072'}
    for k, v in data.items():
        a = []
        if type(v) == str:
            a.append(v)
            data[k] = a

    src_list = ['CVD:000002', 'CVD:000015', 'CVD:000071', 'CVD:000073', 'CVD:000150', 'CVD:000473', 'CVD:000474']
    # src_list = ['CVD:000002', 'CVD:000015', 'CVD:000071', 'CVD:000067', 'CVD:000371', 'CVD:000150', 'CVD:000473',
    #             'CVD:000474']
    res = sorted(src_list)
    print(res)
    father = []
    for key, value in data.items():
        for i in value:
            father.append(i)
    new_res = []
    for xx in res:
        if xx not in data:
            if xx not in father:
                new_res.append(xx)
            else:
                for k, v in data.items():
                    if xx in v and k not in src_list:
                        new_res.append(xx)
        if xx in data:
            f = data[xx]
            for i in f[::-1]:
                if i in src_list and i not in new_res:
                    new_res.append(i)
        new_res.append(xx)
    new_res1 = []
    for i in new_res:
        if i not in new_res1:
            new_res1.append(i)

    print(new_res1)


if __name__ == '__main__':
    sort_id()
#!/usr/bin/env python3
# templates.py 
import fileinput, re 
# 与使用方括号括起的字段匹配
field_pat = re.compile(r'\[(.+?)\]') 
# 我们将把变量收集到这里:
scope = {} 
# 用于调用re.sub:
def replacement(match): 
 code = match.group(1) 
 try: 
 # 如果字段为表达式,就返回其结果:
 return str(eval(code, scope)) 
 except SyntaxError: 
 # 否则在当前作用域内执行该赋值语句
 # 并返回一个空字符串
 return '' 
# 获取所有文本并合并成一个字符串:
#(还可采用其他办法来完成这项任务,详情请参见第11章)
lines = [] 
for line in fileinput.input(): 
 lines.append(line) 
text = ''.join(lines) 
# 替换所有与字段模式匹配的内容:
print(field_pat.sub(replacement, text))

'''
定义一个用于匹配字段的模式。
创建一个用作模板作用域的字典。
定义一个替换函数,其功能如下。
    (1)从match中获取与编组1匹配的内容,并将其存储到变量code中。
    (2)将作用域字典作为命名空间,并尝试计算code,再将结果转换为字符串并返回它。如果成功,就说明这个字段是表达式,因此万事大吉;否则(即引发了SyntaxError异常),
    就进入下一步。
    (3)在对表达式进行求值时使用的命名空间(作用域字典)中执行这个字段,并返回一个空字符串(因为赋值语句没有结果)。
使用fileinput读取所有的行,将它们放在一个列表中,再将其合并成一个大型字符串。
调用re.sub来使用替换函数来替换所有与模式field_pat匹配的字段,并将结果打印出来。
'''
#!/usr/bin/env python3
import socket
s = socket.socket()

host = socket.gethostname()
port = 1234
s.bind((host,port))

s.listen(5)
while True:
    c,addr = s.accept()
    print('Got connection from',addr)
    c.send('Thank you for connecting')
    c.close()    
#!/usr/bin/env python3
import socket
s = socket.socket()

host = socket.gethostname()
port = 1234
s.connect((host,port))
print(s.recv(1024))
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值