Python 如何打印前一个字符串后面的字符

Python 如何打印前一个字符串后面的字符,python,string,output,Python,String,Output,简单地说,我想知道如何做到这一点: 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 我希望我已经解释得足够好,能够理解!任何帮助都将不胜感激。谢谢 这应该是在交互环境中吗?如果是,则必须处理所使用的库提供的用于控制输出

简单地说,我想知道如何做到这一点:

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

我希望我已经解释得足够好,能够理解!任何帮助都将不胜感激。谢谢

这应该是在交互环境中吗?如果是,则必须处理所使用的库提供的用于控制输出的任何内容。对于常规标准库,可以使用回车符
\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打印回这里后面跟着
我回来了。我添加了一个新行,只是为了避免弄乱shell窗口

如果您想要与指定的输出完全相同的输出,
Hello World
出现两次(第一次之后是换行符),则可以从
sys.stdout.write(“{}\n”.format(msg1))
开始,这将生成输出:


这应该是在一个互动的环境中吗?如果是,则必须处理所使用的库提供的用于控制输出的任何内容。对于常规标准库,可以使用回车符
\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打印回这里后面跟着
我回来了。我添加了一个新行,只是为了避免弄乱shell窗口

如果您想要与指定的输出完全相同的输出,
Hello World
出现两次(第一次之后是换行符),则可以从
sys.stdout.write(“{}\n”.format(msg1))
开始,这将生成输出:


您可以使用以下命令更改光标位置:

sys.stdout.seek(offset[, whence])
您可以在此处找到其说明:

但是,使用写入方法会覆盖标准输出,因此您需要以某种方式记住输出。
解决方案示例:

import sys

out = ""

def append(s):
    global out
    sys.stdout.seek(0, 2)
    sys.stdout.write(s)
    out += s

def append_left(s):
    global out
    sys.stdout.seek(0,0)
    sys.stdout.write(s + out)
    out = s + out

append("Hello World")
append_left("Im Back Here!")
但是,当您不将输出重定向到文件stdout时,将无法查找。你可以找到理由
.

您可以使用以下方法更改光标位置:

sys.stdout.seek(offset[, whence])
您可以在此处找到其说明:

但是,使用写入方法会覆盖标准输出,因此您需要以某种方式记住输出。
解决方案示例:

import sys

out = ""

def append(s):
    global out
    sys.stdout.seek(0, 2)
    sys.stdout.write(s)
    out += s

def append_left(s):
    global out
    sys.stdout.seek(0,0)
    sys.stdout.write(s + out)
    out = s + out

append("Hello World")
append_left("Im Back Here!")
但是,当您不将输出重定向到文件stdout时,将无法查找。你可以找到理由 .

试试这个:

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)))
两者都给出相同的结果,代码如下:

尝试以下方法:

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)))

两者都给出了相同的结果,代码如下:

我感谢您的帮助,但这将覆盖上一个/第一个文本,我不希望发生这种情况:(谢谢!@Petrexy:为什么不覆盖?您当前的打印也会覆盖屏幕上的任何内容。@Petrexy但覆盖是您指定的:这就是写入标准输出的工作方式,它会生成您指定的输出。如果您希望第一个输出仍然存在,您需要打印两次。我澄清了我的答案。我感谢您的支持e帮助,但这将覆盖上一个/第一个文本,我不希望发生这种情况:(谢谢!@Petrexy:为什么不覆盖?您当前的打印也会覆盖屏幕上的内容。@Petrexy但覆盖是您指定的:这就是写入标准输出的工作方式,它会生成您指定的输出。如果您希望第一个输出仍然存在,您需要打印两次。我澄清了我的答案。您是如何得到的倾听你的意见?依我看,这会对一个人如何处理事情产生很大的影响。你是如何获得你的意见的?依我看,这会对一个人如何处理事情产生很大的影响。这是一个很好和优雅的解决方案。对于一个更为工程化的方法来说,这更可取,而我上面的方法是直截了当的。谢谢!这个解决方案对我帮助很大,效果很好!非常感谢这是一个很好且优雅的解决方案。对于一个更为工程化的方法更可取,而我上面的方法是直截了当的。谢谢!这个解决方案对我帮助很大,效果很好!非常感谢