Python内置函数(一)

 我们实验使用Python代码来解析下面的文件:

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

 首先我们通过命令行输入带读取的文件名,通过readline函数提取文件的表头信息。然后通过for......in.......逐行读取文本中的信息:读取过程中,使用zip函数将表头信息和对应的表项内容进行打包,得到的结果类似于[('first', 'john') ('last', 'smith') ('email', 'jsmith@example.com')]。最后dict构造函数接受一个列表,将列表中每个元组的第一个元素作为字典的键,第二个元素作为字典的值,并将结果追加到列表当中,并打印出来。

import sys
filename = sys.argv[1]
contacts = []
with open(filename) as file:
    header = file.readline().strip().split()
    for line in file:
        line = line.strip().split()
        content = zip(header, line)
        contacts.append(dict(content))
    for contact in contacts:
        print("email: {email} -- {first}, {last}".format(**contact))

如果使用Python当中的列表解析,那么上述代码可以更为简洁,但相对而言,影响了代码的可读性:

import sys
filename = sys.argv[1]
contacts = []
with open(filename) as file:
    header = file.readline().strip().split()
    contacts = [ dict(zip(header,line.strip().split())) for line in file]
    for contact in contacts:
        print("email: {email} -- {first}, {last}".format(**contact))


补充说明:

使用strip函数可以去除文本末尾的制表符、换行符,而split函数则按照空白字符对文本进行分割(默认),最终返回一个列表对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值