2016-09-20 2 views
-5
sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY" 
s=sentence.split() 
positions = [s.index(x)+1 for x in s] 
print(sentence) 
print(positions) 
with open('task_2.json', 'w') as f: 
    f.write(str(positions)) 
    f.write(str(sentence)) 
f.close() 

이 작업에서는 문장의 개별 단어를 식별하여 목록에 저장하고 원본 문장의 각 단어를 다음 위치의 단어 위치로 대체하는 프로그램을 개발해야합니다. 그 목록. 그런 다음 위치를 압축하여 파일로 보내야합니다. 위의 모든 것을 완료 할 수 있었지만 "열린"부분을 이해하기 위해 고심하고 있습니다. 나는 단지 "open"을 사용하려고 시도했고 코드는 문법 오류와 함께 나온다. 그래서 누군가가 "나와"라는 키워드가이 상황에서 무엇을 설명 할 수 있다면 그것은 대단히 감사 할 것입니다.이 상황에서 열린 do로 무엇을 할 것인가

+3

Google을 시도해보십시오. 재미 있습니다. –

+3

'f.close()'가 중복되었습니다. 와 ~ 때문에. – roganjosh

+0

나는 이해하고 있지만 아직도 고심하고있다. 나는 파이썬을 사용하는 많은 지식을 가지고 있지 않다. 미안. – joe

답변

0

들여 쓰기 된 코드가 실행 된 후에 with open('task_2.json', 'w') as f:이 파일을 닫습니다. 즉, f.close() 행이 필요하지 않습니다. 파이썬에서 with 문을 사용하는 것은 파일을 다루는 더 안전한 방법 일뿐입니다.

0

with은이 경우 with 아래의 들여 쓰기 된 코드가 완료되면 close()이 자동으로 파일 개체가되도록 context manager을 만듭니다. 예를 들어 :

f = open('task_2.json', 'w') 
f.write(str(positions)) 
f.write(str(sentence)) 
print(f.closed) 

False를 인쇄하며, 파일 시스템 자원을 확보하기 위해 f.close() 수동으로 폐쇄해야합니다 동안

with open('task_2.json', 'w') as f: 
    f.write(str(positions)) 
    f.write(str(sentence)) 

print(f.closed) 

True를 인쇄 할 수 있습니다.

+0

구문 오류는 OP가 단순히'with'를'open ('task_2.json', 'w')을 f :' – roganjosh

+1

@roganjosh 그냥 다시 읽는 질문으로 남겨 두려고 시도했기 때문에 발생합니다. OP가 그것을하려고 노력했다는 것을 깨닫지 못했습니다 ... 지적 해 주셔서 감사합니다! – elethan

+0

@TimCastelijns는 먼저 테스트하지 않고 입을 열었습니다. 그 점을 지적 해 주셔서 감사합니다. 그 주석을 삭제했습니다. – elethan

관련 문제