# 下面文件编码方式皆为 utf-8, 运行环境为 windows10+python3.5
问题描述: 已知两个文件 EmailAddressBook.txt 和 TeleAddressBook.txt(内容如下)
EmailAddressBook.txt
姓名 电话号码 王丽丽 13254687@qq.com 张三 14554687@163.com 王五 15954687@outlook.com 桑迪 17854687@foxmail.com
TeleAddressBook.txt
姓名 电话号码 王丽丽 13254687912 张三 14554687912 李四 15954687912 桑迪 17854687912
现编写程序将两个文件合并为AddressBook.txt
姓名 电话 邮箱 张三 14554687@xx.com 14554687912 桑迪 17854687@xx.com 17854687912 王丽丽 13254687@xx.com 13254687912 王五 15954687@xx.com ----- 李四 ----- 15954687912
但是我的程序只能合并为如图, 姓名后的 字符'\t' 不能显示,不知道哪里出错,另外用 windows自带的记事本打开, 内容只显示在一行,没有换行
程序代码如下
#! /usr/bin/env python3 # -*- coding: utf-8 -*- def toDic(_lines): dic = {} for line in _lines: #获取第一个文本中的 姓名和邮箱 信息 e = line.split() #将文本读出来的 bytes 转换为 str 类型 dic[e[0]] = str(e[1].decode('utf-8')) return dic def main(): file1 = open('EmailAddressBook.txt', 'rb') file2 = open('TeleAddressBook.txt', 'rb') file1.readline()#跳过第一行 file2.readline() lines1 = file1.readlines() lines2 = file2.readlines() dic1 = toDic(lines1) #字典方式保存 dic2 = toDic(lines2) ###开始处理 lines = [] lines.append('姓名\t 电话 \t 邮箱\n') for key in dic1: s = '' if key in dic2.keys(): s = '\t'.join([str(key.decode('utf-8')), dic1[key], dic2[key]]) s += '\n' else: s = '\t'.join([str(key.decode('utf-8')), dic1[key], str(' ----- ')]) s += '\n' lines.append(s) for key in dic2: s = '' if key not in dic1.keys(): s = '\t'.join([str(key.decode('utf-8')), str(' ----- '), dic2[key]]) s += '\n' lines.append(s) #防止出现乱码 file3 = open('AddressBook.txt','bw') for line in lines: line = line.encode('utf-8') file3.write(line) file3.close() file2.close() file1.close() print('The addressBook are merged!') if __name__ == '__main__': main()
---------
谢谢
日职2016_软一刘彻
日职2016_软一刘彻
相关分类