# 下面文件编码方式皆为 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()---------
谢谢
Yexiaomo
日职2016_软一刘彻
日职2016_软一刘彻
随时随地看视频慕课网APP
相关分类