String slices

Cameron Simpson cs at cskk.id.au
Fri Aug 9 19:10:12 EDT 2019


On 09Aug2019 22:28, Paul St George <email at paulstgeorge.com> wrote:
>On 09/08/2019 16:29, Rhodri James wrote:
>>The 'sep="\n"' parameter to print() means "put a newline between each 
>>item."  So don't do that.  Put the newlines you do want in explicitly, 
>>or use separate calls to print():
>>
>>(I'm abbreviating because I really can't be bothered to type that 
>>much :-)
>>
>>  print("X:", thing[0],
>>        "\nY:", thing[1],
>>        "\nZ:", thing[2],
>>        file=outstream)
>>
>>or
>>
>>  print("X:", thing[0], file=outstream)
>>  print("Y:", thing[1], file=outstream)
>>  print("Z:", thing[2], file=outstream)
>>
>>I would probably use the latter, but it's just a matter of personal 
>>preference.
>>
>>(Actually I would probably use outstream.write() and do my own 
>>formatting, but let's not get side-tracked ;-)
>>
>So, I am going with your second suggestion (see below) but I would love 
>to hear your outstream.write() side-track!

I am not Rhodri James, but you can just write strings to text files:

  outstream.write("X: ")  # note, includes the space separator
  outstream.write(str(thing[0]))
  outstring.write("\n")

print() is convenient, because it calls str() on any non-str argument 
for you, and it does the space separators and newline line ending (both 
overridable).

You can see the above is rather verbose. But it does let you control 
exactly what gets written, _if_ the print separators and endings are 
causing you inconvenience.

Personally, for text output, I use print unless there's some compelling 
reason not to (such as transcribing a data structure precisely, not 
wanting unexpected spaces and newlines; if I were hand transcribing JSON 
or XML or HTML or the like).

Cheers,
Cameron Simpson <cs at cskk.id.au>



More information about the Python-list mailing list