您的位置:首页 > 编程语言 > Python开发

python3 文件合并

2016-04-20 12:00 495 查看
合并文件,相同的属性最终只出现一次,待合并的2个文件如下:





名字相同,我们就视为是同一个人,python3代码如下:

#打开文件

#文件中出现了中文,为了能够正确处理中文,不出现乱码,打开模式采用'rb'

f1=open(r'C:\Users\Administrator\Desktop\TeleBook.txt','rb')

f2=open(r'C:\Users\Administrator\Desktop\EmailBook.txt','rb')

#跳过第一行

f1.readline()

f2.readline()

#读取文件,列表lines1和lines2分别存储了电话信息和邮箱信息的二进制数据。

lines1=f1.readlines()

lines2=f2.readlines()

#建立空列表用于存储姓名,电话,Email

list1_name=[]

list1_tele=[]

list2_name=[]

list2_email=[]

#获取TeleBook.txt中的信息

for line in lines1:

    elements=line.split()

    #由于elements中是中文的'gbk'二进制编码,为确保中文字符正常显示,我们

    #使用decode('gbk')进行'gbk'解码。

    list1_name.append(elements[0].decode('gbk'))

    list1_tele.append(str(elements[1].decode('gbk')))

#获取EmailBook.txt中的信息

for line in lines2:

    elements=line.split()

    list2_name.append(str(elements[0].decode('gbk')))

    list2_email.append(elements[1].decode('gbk'))

#生成新的数据

lines=[]

lines.append('姓名\t    电话    \t  邮箱\n')

#按索引方式遍历姓名列表1

for i in range(len(list1_name)):

    if list1_name[i] in list2_name:

        j=list2_name.index(list1_name[i])

        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)

#处理姓名列表2中剩余的姓名

for i in range(len(list2_name)):

    if list2_name[i] not in list1_name:

        s='\t'.join([list2_name[i],'  ----  ',list2_email[i]])

        s+='\n'

        lines.append(s)

#将新生成的合并数据写入新的文件中

f3=open(r'C:\Users\Administrator\Desktop\AddressBook.txt','w')

f3.writelines(lines)

#关闭文件

f1.close()

f2.close()

f3.close()

print("The addressBooks are merged")

合并后文件如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: