2016-11-28 2 views
0

일부 중복 된 이전 파일에서 결합 된 CSV 파일을 만들려고하지만 내 코드에 문제가 있습니다. 'test2.csv'는 더 크고 새로운 행을 가지며 'test1.csv'는 제가 작성하려고하는 새 파일입니다.행이 이미 csv에 있는지 확인하는 방법

new = [] 
with open('test1.csv','rb') as file1: 
    reader = csv.reader(file1,delimiter=',') 
    with open('test2.csv','rb') as file2: 
     reader2 = csv.reader(file2,delimiter=',') 
     for row in reader2: 
      if row not in reader: 
       new.append(row) 

for row in new: 
    print row 

편집 :

28/11 16 VwS (10) Ha MaSSe (16) mirage Global Offensive Champions League Season 5 39247 6756 7472 2596 10 16 8459,9434,11307,9410,8460 11838,11837,12943,11840,12944 
28/11 16 Ulti (0) Signature (16) mirage fpsGOD Super League Winter 39251 7343 6774 2533 0 16 12429,12427,12430,12428,12431 9288,10664,9289,11248,12129 

test2.csv : 그래서

28/11 16 Singularity (14) Elements (16) nuke Global Offensive Champions League Season 5 39252 6978 7489 2596 14 16 9317,2822,8862,8875,7463 8726,7405,8727,8368,8410 
28/11 16 eSuba (9) Pathless (16) cache Gauntlet: Fight for the Crown 39253 5412 7433 2430 9 16 9666,10458,7723,9358,3143 9891,9412,12767,12945,12766 
28/11 16 Pathless (16) eSuba (13) mirage Gauntlet: Fight for the Crown 39248 7433 5412 2430 16 13 9412,12945,12767,9891,12766 9666,7723,10458,9961,9358,3143 
28/11 16 VwS (10) Ha MaSSe (16) mirage Global Offensive Champions League Season 5 39247 6756 7472 2596 10 16 8459,9434,11307,9410,8460 11838,11837,12943,11840,12944 
28/11 16 Ulti (0) Signature (16) mirage fpsGOD Super League Winter 39251 7343 6774 2533 0 16 12429,12427,12430,12428,12431 9288,10664,9289,11248,12129 

, 나는에 노력하고있어

내 테스트 파일


test1.csv처럼 누락 된 행을 test2.csv의 test1.csv에 추가하십시오.

+0

스크립트를 실행할 때 어떤 문제가 발생 했습니까? – Atreys

+0

파일이 동일해도 모든 행을 인쇄합니다. 난 그저 다른 CSV 파일에있는 행을 인쇄하고 싶습니다. – tmi12

+0

test1과 test2에있는 내용을 몇 줄으로 명확히 할 수 있습니까? test1.csv라는 파일을 만들려고한다면 처음에 파일을 읽을 때 그 파일에 줄이있는 이유는 무엇입니까? 코딩보다 논리 문제처럼 보입니다. – Atreys

답변

0

파일 test1.csv은 (는) 스 니펫에서 수정되지 않습니다. 판독기가 csv.reader(file1,delimiter=',')으로 생성되면 reader은 이후에 전혀 업데이트되지 않습니다.

입니다. 회 돌이는 new입니다. 회선이 들어 있는지 확인하십시오. 이미 test1.csv에있는 행을 인쇄하지 않으려면 두 번째 파일의 행을 반복 할 때 해당 행을 읽고 중복되지 않았는지 확인해야합니다.

with open('test1.csv','rb') as file1: 
    existingLines = [line for line in csv.reader(file1, delimiter=',')] 

new = [] 
with open('test2.csv','rb') as file2: 
    reader2 = csv.reader(file2,delimiter=',') 
    for row in reader2: 
     if row not in new and row not in existingLines: 
      new.append(row) 

for row in new: 
    print row 
+0

좋아, 그것은 2 개의 별도 루프와 함께 작동합니다. 감사! – tmi12

+0

고정 된 두 개의 루프는 아니지만'existingLines'에 줄을 저장합니다. 그 csv.reader는 파일의 모든 행의 전체 목록이 아니라 반복자입니다. – Atreys

관련 문제