2012-12-03 1 views
0

별도의 텍스트 파일에 포함 된 목록을 처리하려고합니다. 파일을 읽고 파일의 내용을 포함하는 출력을 생성 할 수 있지만 생성 된 출력은 입력과 동일한 처리되지 않은 버전입니다. 작업중인 모듈에 목록이 포함되어있을 때이 문제가 발생하지 않습니다. 프로세스가 성공적으로 실행됩니다. 입력 파일을 사용하는 것이 왜 문제가되는 것입니까?파이썬 모듈 내에서 목록을 처리하지만 별도의 파일에서 동일한 목록을 처리하지 않습니다

이 (참고 - 모두 실행을 위해 "올바른"이 같은 모듈 내에서 함수) 성공적으로 실행 :

import sys 
sys.stdout = open('out.txt','w') 

def spelltest(): 
    for i in test: 
     print correct(i) 

test = ['acess','accesing','accomodation','acommodation','acomodation', 
'acount','adress','adres','addresable','aranged','arrainged', 
'arrangeing','aranging','arragment','articals', 
'annt','anut','arnt','auxillary','avaible', 
'awfall','afful','basicaly','begining', 
'benifit','benifits','beetween', 
'bicycal','bycicle','bycycle'] 

if __name__ == '__main__': 
    print spelltest() 

이되지 않습니다

import sys 
sys.stdout = open(r'C:\Python26\out.txt','w') 

infile = open('C:\\Python26\\text.txt','r') 

def spelltest(): 
    for line in infile: 
     print correct(line) 

if __name__ == '__main__': 
    print spelltest() 

어떤 생각을 무엇을에가 문제가있을 수 있습니까?

답변

0

두 번째 차이점은 line이 파일에서 줄 바꿈 문자 (\n)를 유지한다는 것입니다. 첫 번째 예제에는 해당 문자가 없습니다.

또한 text.txt은 한 줄에 하나의 단어로 포맷되어 있다고 가정합니다.

P. 개행 (및 기타 공백)를 제거하려면 :

파일 형식을 감안할 때
def spelltest(): 
    for line in infile: 
     print correct(line.strip()) 
+0

예, 나는 그것을 언급 했어야 필요하지 않습니다 :

그 후, 당신은 당신의 실제 스크립트에서 목록을 가져올 수 있습니다. text.txt는 한 줄에 한 단어 씩 형식이 지정됩니다. 개행 문자없이 text.txt를 다시 포맷하려고했지만 out.txt 내에서 출력이 생성되지 않았습니다. 줄 바꿈 문자와 관련하여이 문제를 해결할 수있는 방법에 대한 아이디어가 있습니까? 한 줄씩 반대로 목록 내의 항목별로 항목을 반복해야합니까? – user1185790

+0

@ user1185790 :'strip()'을 호출하면 업데이트 된 답변을 볼 수 있습니다. – NPE

+0

나는 그것을 시험해 보았다. 출력 내 각 줄 사이의 간격 만 제거했지만 텍스트를 "수정"하지 못했습니다. – user1185790

0

, 수동 예를 들어, 시작 부분에 "= 단어를"추가 할 수 있습니다

words = ['acess', 'accesing', 'accomodation', 'acommodation', 'acomodation', 'acount', 'adress', 'adres', 'addresable', 'aranged', 'arrainged'] 

을 다음 텍스트로 저장합니다. py 대신 text.txt를 사용하십시오.

from text import words

더 분석이 전혀

관련 문제