Python内置函数(一)

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

first	last	email
john	smith	[email protected]
jane	doan	[email protected]
david	neilson	[email protected]

 首先我们通过命令行输入带读取的文件名,通过readline函数提取文件的表头信息。然后通过for......in.......逐行读取文本中的信息:读取过程中,使用zip函数将表头信息和对应的表项内容进行打包,得到的结果类似于[('first', 'john') ('last', 'smith') ('email', '[email protected]')]。最后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函数则按照空白字符对文本进行分割(默认),最终返回一个列表对象。

发布了98 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chengsilin666/article/details/84825464