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但覆盖是您指定的:这就是写入标准输出的工作方式,它会生成您指定的输出。如果您希望第一个输出仍然存在,您需要打印两次。我澄清了我的答案。您是如何得到的倾听你的意见?依我看,这会对一个人如何处理事情产生很大的影响。你是如何获得你的意见的?依我看,这会对一个人如何处理事情产生很大的影响。这是一个很好和优雅的解决方案。对于一个更为工程化的方法来说,这更可取,而我上面的方法是直截了当的。谢谢!这个解决方案对我帮助很大,效果很好!非常感谢这是一个很好且优雅的解决方案。对于一个更为工程化的方法更可取,而我上面的方法是直截了当的。谢谢!这个解决方案对我帮助很大,效果很好!非常感谢