次のコードはテキストファイルに書き込みます
if classno== '1':
f = open("class1.txt", "a")
if classno== '2':
f = open("class2.txt", "a")
if classno== '3':
f = open("class3.txt", "a")
f.write(name)
f.write(score)
f.close()
ただし、テキストファイルでは、名前とスコアの間にスペースがありません。たとえば、「James14」を「James14」に変更するにはどうすればよいですか。
あなたが試すことができます
f.write(name)
f.write(' ')
f.write(score)
または
f.write(name + ' ')
f.write(score)
または
f.write(name )
f.write(' ' +score)
または
f.write("{} {}".format(name,score))
または
f.write("%s %s"%(name,score))
または
f.write(" ".join([name,score]))
そのスペースを書く必要があります:
_f.write(name)
f.write(' ')
f.write(score)
_
または文字列フォーマットを使用します。
_f.write('{} {}'.format(name, score))
_
Python 3を使用している場合、または_from __future__ import print_function
_を使用している場合は、 print()
function を使用して、あなたのためのスペース:
_print(name, score, file=f, end='')
_
end
を空の文字列に設定しました。そうしないと、改行文字も取得されるためです。もちろん、あなたはmay実際に欲しいその改行文字ですファイルに複数の名前とスコアを書き込む場合、各エントリは独自の行にある必要があります。
簡単な方法は、スペース文字と単純に連結することです。
f.write(name + ' ' + score)
より堅牢な方法(フォーマットがより複雑になる場合)は、format
メソッドを使用することです。
f.write('{} {}'.format(name, score))
BhargavとMartjinの答えは良いです。それを行うには多くの方法があります。引数を再利用してコードをより適切に整理できる可能性があるため、.format
の方法の方が少し優れているように思われることを付け加えておきます。
文字列をフォーマットする必要があります。
output = "%(Name)s %(Score)s" %{'Name': name, 'Score':score}
f.write(output)
f.close()
基本的に、%(Name)sは文字列(括弧の後にsで示される)のプレースホルダー(%で示される)であり、これを「Name」で参照します。 「」で囲まれたフォーマット文字列に続いて、次のような奇妙なことがあります。
%{'名前':名前、 'スコア':スコア}
これは、「名前」および「スコア」プレースホルダーの代わりとなる辞書です。