이 글에서는 주로 Python에서 두 파일을 병합하는 기능을 자세히 소개합니다. 특정 참조 값을 가진 간단한 파일 병합 프로그램입니다. 관심 있는 친구들이 참고할 수 있습니다.
이 글에서는 파일 병합 방법을 분석하고 지적합니다. 파일 병합 과정에서 주의가 필요한 문제.
다음은 병합해야 하는 파일의 예입니다.
분석 아이디어:
두 파일을 병합하려면 먼저 파일을 메모리로 읽어서 목록으로 만듭니다. 그런 다음 목록을 분할하여 카테고리, 즉 이름, 전화번호, 이메일 주소에 따라 데이터를 별도로 저장합니다. List 1을 순회하여 List 2와 차례로 비교합니다. 둘 중에 겹치는 사람이 있으면 직접 .join([ ])을 사용하여 이름, 전화번호, 이메일을 하나의 행으로 병합하고 다른 목록 변수에 저장합니다. 두 개가 겹치지 않는다면 목록 1에만 있다는 뜻이므로 이 사람의 이메일 정보는 str('—-')로 대체됩니다.
이 순회 후 목록 1의 모든 사람과 목록 2 및 목록 1의 중복 사람이 새 목록 변수에 다시 통합되었습니다. 다음으로 목록 2의 고유한 사람을 새 목록 변수에 추가해야 합니다. 방법은 리스트 2를 순회하면서 리스트 1과 겹치지 않는 사람들을 꺼내서 저장하는 것이다.
마지막으로 새 목록 변수의 데이터를 새 파일에 쓰고 모든 파일을 닫습니다.
흐름도는 다음과 같습니다.
코드는 다음과 같습니다.
""" Created on Fri Aug 4 12:59:36 2017 @author: 13323 """ # This program can combine two or more files into one file. def main(): #firstly open the files data1 = open("test_3.txt","rb") data2 = open("test_4.txt","rb") # read the data in file into list data1.readline() #only read one line, skip the first line data2.readline() #only read one line, skip the first line file1 = data1.readlines() #read all variable into list file1 file2 = data2.readlines() #read all variable into list file2 #print(file1) #define particular list to store variable file1_name = [] file1_tel = [] file2_name = [] file2_email = [] #file3 = [] #split file1 into two part for line in file1: element = line.split() #line.split(); devide by ' ' file1_name.append(str(element[0].decode('gbk'))) file1_tel.append(str(element[1].decode('gbk'))) #split file2 into two part for line in file2: element = line.split() file2_name.append(str(element[0].decode('gbk'))) file2_email.append(str(element[1].decode('gbk'))) # pick up the name in the file1 same as the name in the file2 and combine file3 = [] for i in range(len(file1_name)): s = '' if file1_name[i] in file2_name: j = file2_name.index(file1_name[i]) s = '\t'.join([file1_name[i],file1_tel[i],file2_email[j]]) s += '\n' else: s = '\t'.join([file1_name[i],file1_tel[i],str("----")]) s += '\n' file3.append(s) #pick up the name in the file1 doesn't same as the name in the file2 for i in range(len(file2_name)): s = '' if file2_name[i] not in file1_name: s = '\t'.join([file2_name[i],str('----'),file2_email[i]]) s += '\n' file3.append(s) #write the data into file3 data3 = open("test_5.txt","w") data3.writelines(file3) #close the file data1.close() data2.close() data3.close() main()
핵심 포인트:
인코딩 및 디코딩
목록 병합 및 해체
관련 추천:
위 내용은 Python은 두 파일의 병합 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!