Ответ 1
Вы путаете брекеты. Сделайте это так:
target.write("%s \n %s \n %s \n" % (line1, line2, line3))
Или даже лучше, используйте writelines
:
target.writelines([line1, line2, line3])
У меня есть следующий код:
line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")
print "I'm going to write these to the file."
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
Здесь target - это объект файла, а строка1, строка2, строка 3 - пользовательские входы. Я хочу использовать только одну команду target.write() для записи этого script. Я попытался использовать следующее:
target.write("%s \n %s \n %s \n") % (line1, line2, line3)
Но не помещает ли строка внутри другой строки, но если я использую следующее:
target.write(%s "\n" %s "\n" %s "\n") % (line1, line2, line3)
Интерпретатор Python (я использую Microsoft Powershell) говорит о недопустимом синтаксисе. Как я могу это сделать?
Вы путаете брекеты. Сделайте это так:
target.write("%s \n %s \n %s \n" % (line1, line2, line3))
Или даже лучше, используйте writelines
:
target.writelines([line1, line2, line3])
with open('target.txt','w') as out:
line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")
print("I'm going to write these to the file.")
out.write('{}\n{}\n{}\n'.format(line1,line2,line3))
Предполагая, что вы не хотите, чтобы пространство в каждой новой строке использовалось:
print("I'm going to write these to the file")
target.write("%s\n%s\n%s\n" % (line1, line2, line3))
Это работает для версии 3.6
Я замечаю, что это учебное упражнение из книги "Learn Python The Hard Way". Хотя вы задали этот вопрос 3 года назад, я публикую это для новых пользователей, чтобы сказать, что не запрашивайте непосредственно в stackoverflow. По крайней мере, прочитайте документацию, прежде чем спрашивать.
И что касается вопроса, использование writelines
является самым простым способом.
Используйте его следующим образом:
target.writelines([line1, line2, line3])
И как сказал алкид, вы перепутали скобки, просто следуйте его словам.
Это также можно сделать так:
target.write(line1 + "\n" + line2 + "\n" + line3 + "\n")
это также работает:
target.write("{}" "\n" "{}" "\n" "{}" "\n".format(line1, line2, line3))