6

以下代码写入文本文件

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”更改为“James 14”

4

5 回答 5

10

你可以试试

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]))
于 2015-01-07T18:32:48.650 回答
4

你必须写那个空间:

f.write(name) 
f.write(' ') 
f.write(score)

或使用字符串格式:

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

如果您使用的是 Python 3 或 used from __future__ import print_function,您也可以使用该print()函数,并让它为您添加空间:

print(name, score, file=f, end='')

我设置end为一个空字符串,否则你也会得到一个换行符。当然,如果您将多个名称和分数写入文件并且每个条目都需要在自己的行上,您可能实际上需要换行符。

于 2015-01-07T18:32:55.237 回答
4

一种简单的方法是简单地与空格字符连接

f.write(name + ' ' + score)

一种更健壮的方法(如果格式涉及更多)是使用该format方法

f.write('{} {}'.format(name, score))
于 2015-01-07T18:33:05.260 回答
1

Bhargav 和 Martjin 的回答很好。有很多方法可以做到这一点。我想补充一点,这种.format方式似乎更好一点,因为您可以潜在地重用参数并更好地组织您的代码。

于 2015-01-07T18:46:57.770 回答
0

您应该格式化一个字符串。

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

基本上,%(Name)s 是一个字符串(由括号后面的 s 表示)的占位符(用 % 表示),我们将通过“Name”引用它。在我们用“”包裹的格式字符串之后,我们有一个奇怪的东西:

%{'Name': 名字, 'Score':score}

这是一个提供“名称”和“分数”占位符替换的字典。

于 2015-01-07T18:44:51.717 回答