語言: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() //可以見得字典大大簡化了代碼