【问题标题】:Carriage return produces odd behavior in Python using the [end = ] parameter回车使用 [end = ] 参数在 Python 中产生奇怪的行为
【发布时间】:2020-11-26 22:46:48
【问题描述】:

carriage_return = "我将使用马车\rreturn"

按预期工作:

输入

打印(回车)

输出

使用马车返回

打印(carriage_return, end = '\n')

使用马车返回

不如预期:

打印(carriage_return, end = '')

输出(应该在“返回”之后的文本在哪里?)

返回

我预计:

使用马车返回

如果我参加交互式 python 会话,我会得到:

, >>> 打印(carriage_return, end = '')

返回>>>一辆马车

我的光标位于箭头和第一个“a”之间 特点。 (如预期)

所以这里有差异。

我是不是对运输方式有什么误解? return 有效,或者 end='' 语句如何工作?

【问题讨论】:

    标签: python return escaping


    【解决方案1】:

    \r 将字符返回到终端行的开头

    所以它会覆盖字符串上已经存在的内容。

    end='' print 命令的默认值是end='\n'(所以你不需要在每个 print 语句后添加新行)

    因此,通过不在交互式 shell 中打印新行,您只是将光标放在终端上打印的内容的末尾

    >>> print("Hello", end='')
    Hello>>> 
    
    >>> print("Hello\rI will override", end='') 
    I will override>>> 
    

    如果你正常打印,这就是为什么你的下一个 shell 命令不会出现在字符串中间。

    >>> print("Hello", end='\n')
    Hello
    >>> print("Hello")
    Hello
    >>>
    
    >>> print("""Hello
    ... this is a multi line
    ... \rexample""")
    Hello
    this is a multi line
    example
    >>>
    

    那么为什么从脚本运行它时会有所不同?简短的回答不是。这只是您使用的终端如何显示输出的一点点:

    来自 bash 的示例:

    pi@raspberrypi:~ $ cat test.py  
    carriage_return = "I will use a carriage\rreturn"
    
    print(carriage_return)
    print(carriage_return, end='\n')
    print(carriage_return, end='')
    pi@raspberrypi:~ $ python test.py 
    return use a carriage
    return use a carriage
    returnpi@raspberrypi:~ $ 
    

    所以从 bash 开始,它只是覆盖了 $USER@$HOSTNAME 打印的其余部分

    来自 Windows 终端的相同文件:

    Desktop> python .\Stackoverflow.py
    return use a carriage
    return use a carriage
    return use a carriage
    Desktop>
    

    您看到“return”的原因在于您使用的 shell 决定何时开始换行。

    希望这有助于清除它。

    【讨论】:

    • 我明白为什么交互式 shell 会像现在这样工作,我的问题在于我不使用交互式 shell 并且输出只是“返回”。
    • 添加了更多示例,但出现在屏幕上的差异仅来自您使用的外壳/终端选择显示缺少传递的行尾的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2012-10-21
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多