2016-09-23 3 views
0

2 개의 목록을 나누어 비교하고 2 개의 목록에서 성공적으로 비교 된 항목없이 새 목록을 만들려고합니다.파이썬에서 파일을 분할하는 방법

그래서 =

Failed = abc 
Failed = hfi 
Failed = kdi 

List_1.txt 및 List_2.txt을 말할 수 =

1:1:1 - jdsfjdf 
2:2:2 - iidf 
3:3:3 - abc 
6:3:1 - hfi 
8:2:1 - kdi 
3:1:5 - dua 
3:1:2 - dfh 

내가 그 목록을 비교하고 list_1 항목없이 new_list2을 만들고 싶어. 내가 뭘하려

이었다

treinrit = open('List_1', 'r') 
lijna = treinrit.readlines() 
treinrit.close() 

annuleer_treinrit = open('List_2', 'r') 
lijnb = annuleer_treinrit.readline() 
annuleer_treinrit.close() 

lijsta = [] 
lijstb = [] 

for a in lijna: 
    clean = a.split(' - ') 
    print(lijsta) 

for b in lijnb: 
    lijstb.append(lijnb.split(": ")) 

난 그냥 캔트 제대로 분리 할 수있는 목록을 얻을. 비교할 각 파일의 마지막 비트 만 필요하지만 어떻게 작동하는지 모릅니다.

+0

이 페이지를 SO : http://stackoverflow.com/questions/546508/how-can-i-split- a-file-in-python 희망 하시겠습니까? –

+0

원하는 결과를 보여줄 수 있습니까? – Hoopdady

+0

abc, hfi 및 kdi없이 @Hoopdady list_2. –

답변

1
with open('File1', 'r') as f1: 
    f1_stored = [] 
    for line in f1: 
     f1_stored.append(line.split('=')[1].strip()) 
    with open('File2', 'r') as f2; 
     output = [] 
     for line in f2: 
      if not any(failed in line for failed in f1_stored): 
       output.append(line) 

다음은이

bad_stuff = [] 
with open('List_1', 'r') as fn: 
    for line in fn: 
     bad_stuff.append(line.split('=')[1].strip()) 


with open('List_2', 'r') as fn: 
    for line in fn: 
     if line.split(':')[1].strip() not in bad_stuff: 
      print(line) 

같은 output

1

뭔가 bad_stuff 모든하여 = 기호 후 첫 번째 파일의 요소 (같은 abc, hfi하고있을 것이다 목록으로 원하는 일을 kdi)

그런 다음 두 번째 파일을 입력하고 : 기호 뒤에있는 부분이 목록에없는 경우에만 인쇄하십시오. bad_stuff

+0

많은 도움을 주셔서 감사합니다. [1]. 스트립은 정확히 무엇을합니까? –

+1

'strip()'은 선행 및 꼬리 공백과 개행을 제거합니다. 'right '를 제거하는'rstrip()'과 같은 명령이 있습니다. 그래서 꼬리 공백과 개행 (당신도 추측 할 수있는대로 Theres도 lstrip()을 사용합니다). –

+0

Ah tahnks a lot! 그리고 [1]? 그것은 공간이나 무언가를 추가합니까? –

관련 문제