Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除最后打印的字符_Python_Python 2.7_Printing - Fatal编程技术网

Python 删除最后打印的字符

Python 删除最后打印的字符,python,python-2.7,printing,Python,Python 2.7,Printing,我正在用Python编写一个程序,希望用另一个字符替换终端中打印的最后一个字符 伪代码是: print "Ofen", print "\b", # NOT NECCESARILY \b, BUT the wanted print statement that will erase the last character printed print "r" 我正在使用Windows8操作系统、Python 2.7和常规解释器 到目前为止,我看到的所有选择都不适合我。(例如:\010,'\033[#

我正在用Python编写一个程序,希望用另一个字符替换终端中打印的最后一个字符

伪代码是:

print "Ofen",
print "\b", # NOT NECCESARILY \b, BUT the wanted print statement that will erase the last character printed
print "r"
我正在使用Windows8操作系统、Python 2.7和常规解释器

到目前为止,我看到的所有选择都不适合我。(例如:
\010
'\033[#D'
(#是1),
'\r'

这些选项是在其他堆栈溢出问题或其他资源中建议的,似乎对我不起作用

编辑:同样使用
sys.stdout.write
不会改变效果。它只是不会擦除最后打印的字符。相反,使用
sys.stdout.write
时,我的输出是:

Ofenr # with a square before 'r'
我的问题是:

  • 为什么这些选项不起作用
  • 我如何实现期望的输出
  • 这与Windows操作系统或Python 2.7有关吗
  • 当我找到方法时,是否可以手动擦除(使用想要的橡皮擦),删除python的
    print
    语句中打印的
    '\n'

  • 在python中使用
    print
    时,会添加换行符(aka
    '\n'
    )。您应该改用
    sys.stdout.write()

    import sys
    sys.stdout.write("Ofen")
    sys.stdout.write("\b")
    sys.stdout.write("r")
    sys.stdout.flush()
    

    输出:
    Ofer

    在python中使用
    print
    时,添加了换行符(aka
    '\n'
    )。您应该改用
    sys.stdout.write()

    import sys
    sys.stdout.write("Ofen")
    sys.stdout.write("\b")
    sys.stdout.write("r")
    sys.stdout.flush()
    

    输出:
    Ofer

    我认为字符串剥离会对您有所帮助。保存输入,只需将字符串打印到字符串-1的
    长度即可

    实例

    x = "Ofen"
    print (x[:-1] + "r")
    
    我会告诉你结果

    Ofer
    

    希望这有帮助。

    我认为字符串剥离会对您有所帮助。保存输入,只需将字符串打印到字符串-1的
    长度即可

    实例

    x = "Ofen"
    print (x[:-1] + "r")
    
    我会告诉你结果

    Ofer
    

    希望这有帮助。

    您也可以从Python 3导入打印函数。可选的结束参数可以是将要添加的任何字符串。在您的情况下,它只是一个空字符串

    from __future__ import print_function # Only needed in Python 2.X
    
    print("Ofen",end="")
    print("\b",end="") # NOT NECCESARILY \b, BUT the wanted print statement that will erase the last character printed
    print("r")
    
    输出

    Ofer
    

    您还可以从Python 3导入print函数。可选的end参数可以是将要添加的任何字符串。在您的示例中,它只是一个空字符串

    from __future__ import print_function # Only needed in Python 2.X
    
    print("Ofen",end="")
    print("\b",end="") # NOT NECCESARILY \b, BUT the wanted print statement that will erase the last character printed
    print("r")
    
    输出

    Ofer
    

    我编辑了我的问题-这也不起作用。
    '\b'
    真的是使用sys.stdout时使用的正确字符吗?应该可以,你在尝试什么?你有一个字符串文本列表。只有当我使用flush时,它才起作用。为什么?你能解决我的第四个问题吗?为什么不起作用?它必须这样做吗h flush也一样?@在标准输出中打印时,python通常将其保存在缓冲区中。使用
    flush
    将清空该缓冲区。请看一看。使用
    print
    语句将始终追加
    '\n'
    得到flush的功能。那么为什么写出
    '\b'
    不会删除由print编写的
    '\n'
    呢?我编辑了我的问题n-这也不管用。
    '\b'
    真的是使用sys.stdout时使用的正确字符吗?应该可以,你在尝试什么?你有一个字符串文本列表。只有当我使用flush时,它才能正常工作。为什么?你能解决我的第四个问题吗?为什么不工作?它也与flush有关吗?@OferArial在标准输出中打印时,python将其保存在缓冲区中。使用
    flush
    将清空该缓冲区。请看一看。使用
    print
    语句将始终追加
    '\n'
    得到flush所做的操作。那么,为什么写出
    '\b'
    不会删除由print编写的
    '\n'
    呢?您是否拒绝了我的编辑,然后使用p将我的编辑粘贴为您自己的编辑?不,我没有,社区拒绝了您的编辑,我批准了它。哦,我明白了。我很困惑,因为我的活动说编辑被拒绝,但我在这里看到了更改。对不起!您只是拒绝了我的编辑,然后将我的编辑粘贴为您自己的编辑吗?不,我没有,社区拒绝了您的编辑,我批准了它。哦,我明白了。我很困惑,贝卡“使用我的活动”表示编辑被拒绝,但我在此处看到了更改。抱歉!