>백엔드 개발 >파이썬 튜토리얼 >Python은 두 파일의 병합 기능을 구현합니다.

Python은 두 파일의 병합 기능을 구현합니다.

不言
不言원래의
2018-04-02 16:03:473118검색

이 글에서는 주로 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()


핵심 포인트:

인코딩 및 디코딩
목록 병합 및 해체

관련 추천:

Two Python은 전환 기능을 구현합니다

Python은 사이트 관리 방법을 구현합니다


위 내용은 Python은 두 파일의 병합 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.