Doest this mean i should throw another delay() at the start of the loop?
No, remove the delay() from loop(). You have to insert a delay at the start of your python prog just after opening the serial interface. A delay of 2 seconds is usually enough.
Is it some sort of overflow issue? Printing speed is rather slow as well. It could also be an encoding issue since putting the words between single quotes partially solves the problem.
As I don't know the type of printer you're using, I cannot tell. From your description that the printer prints something after you stop your python script I assumed it's the bootloader blocking because it gets serial traffic during it's code upload phase.