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

语言: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()                               //可以见得字典大大简化了代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值