【Python基础】1.1.2 多文件合并操作

来源:互联网 发布:python def peven (n) 编辑:程序博客网 时间:2024/06/07 03:42

语言:Python
IDE:Python.IDE

  1. IPO描述

通过文件“data1.txt”以及”data2.txt”表述,其中第一个文件存储姓名+电话,第二个文件存储姓名+邮箱,具体如下图。 要求建立新的”data.txt”合并上述两表

I:输入文件
P:处理数据
O:输出新文件

  1. 普通源码段
#初始化工作    ftele1=open('data1.txt')    ftele2=open('data2.txt')    ftele1.readlines()    ftele2.readlines()    lines1=ftele1.readlines()    lines2=ftele2.readlines()    list1_name=[]    list1_tele=[]    list2_name=[]    list2_email=[]
#获取电话信息    for line in lines1:        elements=line.split()            //去空格        list1_name.append(str(elements[0].decode('gbk')))          //中文解码按照gbk        //append为添加元素        list1_tele.append(str(elements[1].decode('gbk')))
#合并    lines=[]    lines.append('姓名\t 电话\t 邮箱\n')    //按索引遍历姓名1    for i in range(len(list1_name)):        s=''        if list_name[i] in list2_name:            j=list2_name.index(list1_name[i])     //index通过相同的名字索引位置            s='\t'.join(list1_name[i],list1_tele[i],list2_email[j])            s+='\n'        else:            s='\t'.join(list1_name[i],list1_tele[i],str('    _____   ')            s+='\n'        lines.append(s)
#处理剩余姓名及邮箱    for i in range(len(list2_name)):        s=''        if list2_name[i] not in list1_name:            s='\t'.join(list2_name[i],str('    _____   '),list2_email[i])            s+='\n'        lines.append(s)
#合并    ftele3=open(data.txt','w')    ftele3.writelines(lines)
#最终一些小细节    ftele3.close()    ftele1.close()    ftele2.close()    print("complete!")main()
  1. 字典结构简化源码段
#初始化工作    ftele1=open('data1.txt')    ftele2=open('data2.txt')    ftele1.readlines()    ftele2.readlines()    lines1=ftele1.readlines()    lines2=ftele2.readlines()    dic1={}    dic2={}          //字典方式保存
#获取两个文件信息for line in line1:    elements=line.split()    dic1{elements[0]}=str(elements[1].decode('gbk'))for line in line2:    elements=line.split()    dic2{elements[0]}=str(elements[1].decode('gbk'))
#处理与上文类似lines=[]lines.append('姓名\t 电话\t 邮箱\n)for key in dic1:    s=''    if key in dic2.keys():        s='\t'.join([str(key.decode('gbk')),dic1[key],dic2[key]])        s+='\n'    else:        s='\t'.join([str(key.decode('gbk')),dic1[key],str('   _____   ')])    lines.append(s)for key in dic2:    s=''    if key not in dic1.keys():        s='\t'.join([str(key.decode('gbk')),str('   _____   '),dic2[key]])        s+='\n'    lines.append(s)
#结束    ftele3=open(data.txt','w')    ftele3.writelines(lines)    ftele3.close()    ftele1.close()    ftele2.close()    print("complete!")main()                               //可以见得字典大大简化了代码
原创粉丝点击