因此,简单地说,我想知道如何执行此操作:
import sys
sys.stdout.write("Hello World")
=> Hello World
#print something to go left maybe?
sys.stdout.write("Im Back Here!")
=> Im Back Here!Hello World
我希望我已经对此进行了充分的解释以至于理解!任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
您可以使用以下方法更改光标位置:
TransactionScope
您可以在此处找到其说明: Python 3 library
但是使用write方法会覆盖stdout,因此您需要以某种方式记住输出。
解决方案示例:
sys.stdout.seek(offset[, whence])
但是当您不将输出重定向到文件stdout时,则不可行。你可以找到原因 there。
答案 1 :(得分:1)
这应该在交互式环境中吗?如果是,则必须处理您使用提供的库来控制输出。对于常规标准库,可以使用回车符\r
进行覆盖。玩:
import sys
msg1 = "Hello World"
msg2 = "Im Back Here!"
sys.stdout.write(msg1)
sys.stdout.write("\r{}{}".format('\r', msg2, msg1))
sys.stdout.write('\n')
行sys.stdout.write(msg1)
产生输出Hello World
,而行sys.stdout.write("\r{}{}".format(msg2, msg1))
将光标移回行首,打印Im Back Here!
,后跟Im Back Here!
。我添加了换行符只是为了避免弄乱shell窗口。
如果您想要与指定的输出完全相同,并且Hello World
出现两次(第一次后跟换行符),则可以从sys.stdout.write("{}\n".format(msg1))
开始,它将产生输出: / p>
Hello World
Im Back Here!Hello World
答案 2 :(得分:1)
尝试一下:
l = []
l.append("Hello World")
l.append("Im Back Here!")
l.reverse()
print(''.join(l))
或者这个:
import sys
def insert_str(string, str_to_insert, index):
return string[:index] + str_to_insert + string[index:]
s1 = "Hello World"
s2 = "Im Back Here!"
sys.stdout.write(insert_str(s2,s1,len(s2)))
两者都给出相同的结果,并且代码在这里:https://onlinegdb.com/BJGCJQml4