I am starting to learn Python with an online guide, and I just did an exercise that required me to write this script:
from sys import argv
script, filename = argv
print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."
raw_input("?")
print "Opening the file..."
target = open(filename, 'w')
print "Truncating the file. Goodbye!"
target.truncate()
print "Now I'm going to ask you for three lines."
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")
print "And finally, we close it."
target.close()
I got it to run fine, but then the guide said: "There's too much repetition in this file. Use strings, formats, and escapes to print out line1, line2, and line3 with just one target.write() command instead of 6."
I'm not sure how to do this. Can anyone help? Thanks!
The guide is suggesting creating a single string and writing it out rather than callingwrite()
six time which seems like good advice.
You've got three options.
You could concatentate the strings together like this:
line1 + "\n" + line2 + "\n" + line3 + "\n"
or like this:
"\n".join(line1,line2,line3) + "\n"
You could use old string formatting to do it:
"%s\n%s\n%s\n" % (line1,line2,line3)
Finally, you could use the newer string formatting used in Python 3 and also available from Python 2.6:
"{0}\n{1}\n{2}\n".format(line1,line2,line3)
I'd recommend using the last method because it's the most powerful when you get the hang of it, which will give you:
target.write("{0}\n{1}\n{2}\n".format(line1,line2,line3))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With