web-dev-qa-db-ja.com

python)でテキストファイルに書き込むときに単語間にスペースを入れるにはどうすればよいですか?

次のコードはテキストファイルに書き込みます

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」に変更するにはどうすればよいですか。

5
user3662438

あなたが試すことができます

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]))
8
Bhargav Rao

そのスペースを書く必要があります:

_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実際に欲しいその改行文字ですファイルに複数の名前とスコアを書き込む場合、各エントリは独自の行にある必要があります。

3
Martijn Pieters

簡単な方法は、スペース文字と単純に連結することです。

f.write(name + ' ' + score)

より堅牢な方法(フォーマットがより複雑になる場合)は、formatメソッドを使用することです。

f.write('{} {}'.format(name, score))
2
CoryKramer

BhargavとMartjinの答えは良いです。それを行うには多くの方法があります。引数を再利用してコードをより適切に整理できる可能性があるため、.formatの方法の方が少し優れているように思われることを付け加えておきます。

1
Cassandra

文字列をフォーマットする必要があります。

output = "%(Name)s %(Score)s" %{'Name': name, 'Score':score}
f.write(output)
f.close()

基本的に、%(Name)sは文字列(括弧の後にsで示される)のプレースホルダー(%で示される)であり、これを「Name」で参照します。 「」で囲まれたフォーマット文字列に続いて、次のような奇妙なことがあります。

%{'名前':名前、 'スコア':スコア}

これは、「名前」および「スコア」プレースホルダーの代わりとなる辞書です。

0