python文件操作之 文件的合并

使用python实现文件1和文件2中内容的合并

代码是借鉴的 并非独立完成 (里边具体功能的实现需要学习!!!)

文件1是电话簿 文件2是邮箱簿 截图如下:

python文件操作之 文件的合并_第1张图片
python文件操作之 文件的合并_第2张图片

图还是一如既往地传不上去,,,,,,,,,,,,

代码实现的主要思路:

首先读取文件1和文件2 存成两个列表lines1和lines2(需要注意列表里面的每一个元素仍然是一个列表 而且每一个元素对应原来文件的一行);
然后就是需要进行分别存 把lines1中的姓名单独存成一个列表 电话单独存成一个列表 对于lines2也是如此,
其次对于列表1和列表2进行合并,具体做法是 分成三类:表1和表2中名字相同的 表1中有但是表2中没有 以及表1中没有 表2中有,并且需要注意一点 需要用字符串进行扩展 因为需要把合并后的内容放到lines中 然后用writelines()写入到新的文件3中 而writelines()函数要求列表中的元素必须是字符串(有点啰嗦 主要是后来我自己编写的时候 出错了)
最后就是进行文件的写入

代码

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 29 13:35:50 2018

@author: xuanxuan
"""
#this code is to practice and it is given by the teacher!!
#the function is to combine the file1 and file2

def main():
    file1=open("teleaddress.txt",'rb') #因为文件1中有中文
    file2=open("emailaddress.txt",'rb')

    file1.readline()   #由于文件1中第一行不应该被读到 所以跳过第一行
    file2.readline()
    lines1=file1.readlines() #文件读取操作中的readlines()函数是读取文件的所有内容 存成一个列表
    lines2=file2.readlines()


    list1_name=[] #初始化一系列 列表 主要是分别存放文件1和文件2中的姓名,电话 和邮箱
    list1_tele=[]
    list2_name=[]
    list2_email=[]

    for line in lines1:
        element=line.split()
        list1_name.append(str(element[0].decode("gbk")))
        list1_tele.append(str(element[1].decode("gbk")))

    for line in lines2:
        element=line.split()
        list2_name.append(str(element[0].decode("gbk")))
        list2_email.append(str(element[1].decode("gbk")))

    #现在已经有四个列表 用来存放文件1中的姓名和电话 以及文件2中的姓名和邮箱

    lines=['姓名\t    电话\t     邮箱\n\n'] #开始进行合并操作,由于lines里边的内容是需要用write() 此时lines就是一个字符串或者writelines()此时lines就是一个列表(很明显是后者)写到文件file3中的 所以lines中的内容必须是字符串['xuanxuan','haha','hehe']而不能在嵌套列表了 否则写不进去!!!
               #因为writelines()中就是针对列表 而且里面的元素必须是字符串
    s=''
    for i in range(len(list1_name)):
        #s=''
        if list1_name[i] in list2_name: #此处把文件1和文件2中名字一样的进行合并 也就是姓名 电话 邮箱都是齐全的
            j=list2_name.index(list1_name[i]) #就是利用索引来查找文件2中和文件1中名字一样的元素 位于文件2的第几行 便于其邮箱的插入
            s='\t'.join([list1_name[i],list1_tele[i],list2_email[j]])
            s+='\n'
        else:      #此处是对于文件1中可是文件2中没有的 那么就是只有姓名和电话 不存入邮箱
            s='\t'.join([list1_name[i],list1_tele[i],str("-----------")])
            s+='\n'

        lines.append(s)

    for i in range(len(list2_name)):
        if list2_name[i] not in list1_name[i]:
            s='\t'.join([list2_name[i],str("-----------"),list2_email[i]])
            s+='\n'
        lines.append(s)

    #至此已经成功的完成合并文件的操作 

    file3=open("file1and2_xuanxuan.txt",'w')
    file3.writelines(lines)
    file3.close()
    file2.close()
    file1.close()

    print("oh it is unbelievable!!")
main()

废话

多阅读别人的代码 多动手实践

你可能感兴趣的:(python文件操作之 文件的合并)