我使用Learnpythonthehardway.org,在练习16中,研究演练说如下: “使用字符串,格式和转义符只用一个target.write()命令而不是六个打印第1行,第2行和第3行。”
所以,我改变了:
target.write(line1, "\n", line2, "\n" line3, "\n")
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
分为:
target.write("%s \n %s \n %s \n") %(line1, line2, line3)
有谁可以解释我做错了什么?
答案 0 :(得分:3)
file.write()
只接受一个参数,而不是更多。只有print()
函数可以为您处理多个参数。
您需要将字符串格式化为一个参数,而不是尝试“格式化”target.write()
函数的返回值:
target.write("%s\n%s\n%s\n" % (line1, line2, line3))
或使用print()
函数添加换行符和分隔符:
print(line1, line2, line3, sep='\n', file=target)
print()
因为函数是Python 3中的默认函数;如果您使用的是Python 2,则可以通过添加以下内容将print
语句转换为print()
函数:
from __future__ import print_function
在模块的开头。
请注意,原始练习代码会将行写入文件,而中间不会有空格。
答案 1 :(得分:3)
你必须这样做
target.write("%s \n %s \n %s \n" % (line1, line2, line3))
最好使用字符串的format
方法。
target.write("{} \n {} \n {} \n".format(line1, line2, line3))
修改强>
您可能希望查看this question,了解为什么format
优于%
格式
答案 2 :(得分:0)
在字符串上应用%
运算符。
target.write("%s \n %s \n %s \n" % (line1, line2, line3))
注意:对于更复杂的字符串格式,请在字符串上使用format方法。