语言:Python
IDE:Python.IDE
- IPO描述
通过文件“data1.txt”以及”data2.txt”表述,其中第一个文件存储姓名+电话,第二个文件存储姓名+邮箱,具体如下图。 要求建立新的”data.txt”合并上述两表
I:输入文件
P:处理数据
O:输出新文件
- 普通源码段
#初始化工作
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[].decode('gbk')))
//中文解码按照gbk
//append为添加元素
list1_tele.append(str(elements[].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()
- 字典结构简化源码段
#初始化工作
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[]}=str(elements[].decode('gbk'))
for line in line2:
elements=line.split()
dic2{elements[]}=str(elements[].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() //可以见得字典大大简化了代码