day03 每日一行

day03 每日一行

问题描述

用列表解释式 、生成器表达式实现
字典列表为:

[{'first': 'john', 'last': 'smith', 'email': 'jsmith@exsample.com'},
 {'first': 'jane', 'last': 'doan', 'email': 'jane@example.com'},
 {'first': 'david', 'last': 'neilson', 'email': 'david@example.com'}]

email.txt

first	last	email
john	smith	jsmith@exsample.com
jane	doan	jane@example.com
david	neilson	david@example.com

代码展示

# 封装函数
def readlist(path):
    list = []
    # list1 = []
    with open(path, 'r') as restream:
        container = restream.readlines()
        for i in container:
            list.append(i.replace('\n', '').replace('\t', ' '))
        a = list[0].split(' ')
        # for i in range(1, len(list)):
        #     b.append(list[i].split(' '))
        b = [list[i].split(' ') for i in range(1, len(list))]
        for i in b:
            c = 0
            dict = {}
            for j in i:
                dict[a[c]] = j
                c += 1
                if (c == 3):
                    continue
            yield dict
            # list1.append(dict)
        return 'done'


# 主程序
list = []
path = '基础语法\email.txt'
g = readlist(path)
for i in g:
    list.append(i)

print(list)

进阶使用zip

def list_parsing():
    with open('基础语法\email.txt','r') as f:
        header=f.readline().strip().split('\t')
        list =[
            dict(zip(header,line.strip().split('\t'))) for line in f.readlines()
        ]
        print(list)
posted @ 2020-08-29 22:08  qinling73  阅读(160)  评论(0编辑  收藏  举报