是否有与HighLine等效的Python?

N.N*_*.N. 7 ruby python console highline

HighLine是一个Ruby库,用于简化控制台输入和输出.它提供了允许您请求输入并验证它的方法.有没有提供与Python类似的功能的东西?

要显示HighLine的功能,请参阅以下示例:

require 'highline/import'

input = ask("Yes or no? ") do |q|
  q.responses[:not_valid] = "Answer y or n for yes or no"
  q.default = 'y'
  q.validate = /\A[yn]\Z/i
end
Run Code Online (Sandbox Code Playgroud)

它询问"是或否?"并让用户输入内容.只要用户没有输入y或n(不区分大小写),就会打印"回答y或n表示是或否"并让用户再次输入答案.此外,如果用户按Enter键,则默认为y.最后,当它完成时,输入存储在input.这是一个示例结果,用户首先输入"EH ???" 然后是"y":

Yes or no? |y| EH???
Answer y or n for yes or no
?  y

有没有类似的简单方法在Python中做同样的事情?

N.N*_*.N. 3

您可以使用 Python 3 模块cliask。该模块的灵感来自IT Ninja的答案,修复了其中的一些缺陷,并允许通过正则表达式、谓词、元组或列表进行验证。

获取模块的最简单方法是通过pip安装它(有关其他安装方法,请参阅自述文件):

sudo pip install cliask
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过导入来使用该模块,如下例所示:

sudo pip install cliask
Run Code Online (Sandbox Code Playgroud)

以下是运行示例时会话的外观:

是还是不是?|y| 诶???
请输入“是”或“否”
是还是不是?|y| y
牛还是猫?兔子
你必须说牛或猫
牛还是猫?猫
真的
猫