【问题标题】:How to input a new line character while the execution of input() method in Python 3?如何在 Python 3 中执行 input() 方法时输入换行符?
【发布时间】:2021-10-26 08:49:36
【问题描述】:

我想在 Python 3 中执行input() 方法时输入一个换行符(又名换行符)。该字符必须是可删除的(可以删除),但不像sys.stdin.readlines()(因为该字符没有可删除的)。我想通过异常停止输入(即KeyboardInterrupt)。

我可以吗?如果有,怎么做?

【问题讨论】:

  • 嗨@Chen,欢迎来到stackoverflow。我知道我的 Python 和行格式的来龙去脉,但我无法弄清楚你在说什么。你能描述一下你真正想要完成的事情,即你试图用可删除的换行符解决的问题吗?
  • 换行符由终端或运行 Python 的任何东西管理,是的,它们很特别。要备份一个换行符,您需要做一些额外的工作,详细信息将取决于您的操作系统和调用 Python 脚本的方式。
  • 我的意思是,字符必须是可删除的,例如:当我输入“foo输入bar”并按退格键6次,控制台上的结果是“f” ,但不是带有换行符的“foo”。
  • 是的,这不取决于 Python,请阅读我的第二条评论。

标签: python python-3.x input io


【解决方案1】:

你无限循环输入,直到你用 try except 部分捕捉到键盘中断。如果你想删除换行符,你也可以直接放弃将它添加到字符串中。

string = ''
try:
    while True:
        string += input()
        string += '\n' # optional
except KeyboardInterrupt:
    print(string)   

【讨论】:

  • 我的意思是,字符必须是可删除的,例如:当我输入“foo enter bar”并按退格键6次,结果是“f”,但不是带有换行符的“foo”。
  • @Chen-Y0y0 您可以将 \n 替换为您想要的任何内容。我不认为你可以通过 python 输入退格。您可以有用户需要输入的特定模式以进行退步,或者将其限制为一行
  • @Chen-Y0y0 这不是你可以通过单独从流中读取的东西;你需要某种编辑器来构造 Python 看到的值。看看readline 模块。
【解决方案2】:

如果您的意思是多行应用程序,由于命令提示符的工作方式,它是一个需要解决的复杂问题。我建议您查看 this 以创建可能是您需要的全屏 UI。

否则,我只能考虑制作一个事件侦听器,它会在每次击键时重新打印“编辑器”的所有行,同时将“编辑器”的所有内容存储在一个字符串中,并在一段时间内运行- 带有 KeyboardInterrupt 异常处理程序的循环。例如。假设您按 a [enter] a [delete] [delete] 它将打印 1+2+2+2+1 行。我并不是说这是唯一的解决方案,或者是最好的解决方案,而是一种解决它的方法。我已经为个人项目完成了这种 UI,但在全屏(每次打印固定数量的行)上更新提示的不同部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2011-02-02
    • 2021-05-29
    • 2011-08-14
    • 1970-01-01
    相关资源
    最近更新 更多