有两个文件,想实现第一个文件所列出名字,在第二个文件中获取信息,如果第二个文件中没有记录则返回 no hit.
其中第一个文件如下:
Sam
Tom
Billy
Fang
Yong
Bill
另外一个文件如下:
Sam,25
Sam,teacher
Sam,America
Tom,student
Tom,ITer
Billy,38
Billy,professor
Fang,famer
Yong,Phd
根据上述两个文件得到如下结果文件:
Sam, 25;teacher;America
Tom, student;ITer
Billy, 38;professor
Fang, famer
Yong, Phd
其中第一个文件如下:
Sam
Tom
Billy
Fang
Yong
Bill
另外一个文件如下:
Sam,25
Sam,teacher
Sam,America
Tom,student
Tom,ITer
Billy,38
Billy,professor
Fang,famer
Yong,Phd
根据上述两个文件得到如下结果文件:
Sam, 25;teacher;America
Tom, student;ITer
Billy, 38;professor
Fang, famer
Yong, Phd
Bill, no hit
===========================================
代码以及一些知识点如下:
#!/usr/bin/python
from StringIO import StringIO #StringIO模块把标准输入输出指向内存,该例子中是在内存中写入和读取文件.
sam1='''Sam
Tom
Billy
Fang
Yong
Bill
'''
sam2='''
Sam,25
Sam,teacher
Sam,America
Tom,student
Tom,ITer
Billy,38
Billy,professor
Fang,famer
Yong,Phd
'''
f1 = StringIO(sam1) #调用StringIO
f2 = StringIO(sam2)
name_dict = {}
for line in f2:
list = line.rstrip().split(',')
if len(list) == 2:
name_dict.setdefault(list[0],[]).append(list[1]) #字典的setdefault属性,如果有key存在,则返回该key的value,如果不存在,则插入key和value.这里是添加一个列表,后续追加列表属性.
for line in f1:
name = line.rstrip()
feature = ';'.join(name_dict[name]) if name in name_dict else 'no hit'
print '{},{}'.format(name,feature) #format 是按格式输出这里的{}分别代表name和feature,中间用","隔开.
参考链接:
http://bbs.chinaunix.net/thread-4131928-1-1.html