我已经开始使用 LPTHW 学习 Python,并且我已经完成了练习 16:
http://learnpythonthehardway.org/book/ex16.html
感觉自己像个白痴,因为我无法弄清楚需要以下内容的看似简单的“额外学分”作业之一:
target.write(line1)
target.write('\n')
target.write(line2)
target.write('\n')
target.write(line3)
target.write('\n')
要浓缩成一行代码。我尝试了以下一些方法:
target.write(line1 \n, line2 \n, line3 \n)
或者:
target.write('line1 \n, line2 \n, line3 \n')
或者:
target.write(%r \n, %r \n, %r \n) % (line1, line2, line3)
我无法让它重写同一行中的第 1 行、第 2 行和第 3 行字符串。我尝试了各种其他组合,有和没有逗号、引号等。我不断收到各种错误,例如无效语法或我有太多参数。
最佳答案
target.write(line1 \n, line2 \n, line3 \n)
'\n' 仅在字符串文字中有意义。没有引号,您就没有字符串文字。
target.write('line1 \n, line2 \n, line3 \n')
好的,现在一切都是字符串文字。但是您希望 line1、line2、line3 不是字符串文字。您需要将它们作为 python 表达式来引用相关变量。基本上,您必须在字符串周围加上引号,这些字符串实际上是像“\n”这样的文本,而不是在变量周围。如果你这样做,你可能会得到类似的东西:
target.write(line1 '\n' line2 '\n' line3 '\n')
什么是2 2
?没什么。您必须向 python 指定如何组合这两部分。所以你可以有 2 + 2
或 2 * 2
但 2 2
没有任何意义。在这种情况下,我们使用 add 来组合两个字符串
target.write(line + '\n' + line2 + '\n' + line3 + '\n')
继续前进,
target.write(%r \n, %r \n, %r \n) % (line1, line2, line3)
同样,\n
仅在字符串文字中有意义。用于生成字符串的 % 运算符将字符串作为其左侧。因此,您需要在字符串中包含所有格式设置细节。
target.write('%r \n', '%r \n', '%r \n') % (line1, line2, line3)
但是这会产生 3 个字符串文字,您只需要一个。如果你这样做了,写提示,因为它除了一个字符串,而不是 3 个。所以你可能已经尝试过类似的东西:
target.write('%r \n%r \n%r \n') % (line1, line2, line3)
但是您想将第 1 行、第 2 行、第 3 行写入文件。在这种情况下,您正在尝试在写入完成后进行格式化。当 python 执行它时,它将首先运行 target.write 离开:
None % (line1, line2, line3)
这不会做任何有用的事情。为了解决这个问题,我们需要将 % ()
放在 .write()
target.write('%r\n%r\n%r\n' % (line1, line2, line3))
关于python - 如何在一行中写多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691311/