2013-06-25 2 views
1

list.txt의 모든 줄을 구문 분석하려고 시도하고 변경 번호가 change_list에 없으면 그 전체 항목을 삭제하십시오. 번호)를 만들고 나머지 숫자는 OUTPUT.txt 인 새 파일을 만듭니다.줄에 항목이없는 경우 전체 줄 삭제

아래의 예에서 350166은 change_list에 없으므로 "350882 348521 350166"줄이 모두 제거되고 나머지 줄만 output.txt에 추가됩니다.

웬일인지 나는 원하는 아웃 엇을 얻는 것처럼 보이지 않는다. 아무도 그것이 잘못되어 가고있는 것을 지적 할 수 있습니까?

change_list=[] 
def changecheck(change) : 
    changelist=['355199','352470','346917','350882','348521'] 
    if change in changelist: 
     return 1 
    else: 
     return 0 


with open('list.txt', 'r') as f: 
    for line in f : 
     line=line.strip() 
     change_line = line 
    print "change_line" 
    print change_line 

for element in change_line: 
    change_list = element.split(' ') 
    for changeid in change_list: 
     print "changeid" 
     print changeid 
     returnVal = changecheck('changeId') 
     if returnVal == 1: 
      #write the whole line to a new file 
      with open('output.txt', 'r') as f: 
       f.writelines(element) 

파일 :

list.txt 
350882 348521 350166 
346917 352470 
355199 

OUTPUT.txt 
346917 352470 
355199 
+0

당신이 하나를 사용할 필요가 없습니다 및 변경 목록에서 변경하는 경우 0이 단순히'사용할 수 있습니다 : 개방과 함께 ...' – Elazar

답변

2

changecheckset을 확인하고 별도의 번호로 그것을 분할 입력을 통해 발전기를 구축하고, 단지 파일의 행을 포함 할 경우 라인에 모든 숫자 changecheck에 ... 예 :

changelist = {'355199','352470','346917','350882','348521'} 

with open('input') as fin, open('output', 'w') as fout: 
    lines = (line.split() for line in fin) 
    valid = (' '.join(line) + '\n' for line in lines if all(el in changelist for el in line)) 
    fout.writelines(valid) 
+0

I이 m을 생각한다 질문에서 빠진 부분은''w '' 플래그입니다. – Elazar

+0

@ 엘라 살 좋은 지적;) –

관련 문제