2016-09-20 10 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() 

このタスクでは、文章内の個々の単語を特定し、それらをリストに格納し、元の文の各単語を次の単語の位置に置き換えるプログラムを開発する必要があります。リスト。次に、位置を圧縮してファイルに送信する必要があります。私は上記のすべてを完了することができましたが、「オープン」の部分を理解するために苦労しています。私はちょうど "オープン"を使用しようとしており、コードは構文エラーを伴います。だから、もし誰かがこのような状況で "with"というキーワードが何を説明できるのであれば、それは大いに感謝するだろう。この場合この状況で開かれているものとは何か

+3

try google、それは楽しいです –

+3

'f.close()'はあなたのコードでは冗長です。 'と'のために。 – roganjosh

+0

私はまだ理解するのに苦労しています。私はPythonを使用して多くの知識を持っていない、ごめんなさい – joe

答えて

0

with open('task_2.json', 'w') as f:は、インデントされたコードの実行後にファイルを閉じます。つまり、f.close()行は必要ありません。 Pythonでwith文を使用することは、ファイルで作業するより安全な方法です。

0

withwith仕上げの下にインデントされたコードを自動的にファイルオブジェクトを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

関連する問題