有没有一种Python等价于HighLine?

2024-10-01 00:24:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

它问“是还是不是?”让用户输入一些东西。只要用户不输入y或n(不区分大小写),它就会打印“是或否的答案y或n”,并允许用户再次键入答案。另外,如果用户按Enter键,则默认为y。最后,完成后,输入将存储在input中。下面是一个用户第一次输入“EH然后是“y”:

^{pr2}$

在Python中也有类似的简单方法吗?在


Tags: or方法no答案用户import功能示例
2条回答

下面的应该对您起到类似的作用,尽管它与Ruby中的询问方式不完全相同。在

class ValidInput(object):
    def __init__(self,prompt,default="",regex_validate="",
             invalid_response="",correct_response=""):
        self.prompt=prompt
        self.default=default
        self.regex_validate=regex_validate
        self.invalid_response=invalid_response
        self.correct_response=correct_response
    def ask(self):
        fin=""
        while True:
            v_in=raw_input(self.prompt)
            if re.match(v_in,self.regex_validate):
                fin=v_in
                print self.correct_response
                break
            else:
                print self.invalid_response
                if self.default=="break":
                      break
                continue
        return fin

你可以这样使用它:

^{pr2}$

您可以使用python3模块cliask。该模块受the answer of IT Ninja的启发,修复了some deficiencies in it,并允许通过正则表达式、谓词、元组或列表进行验证。在

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

sudo pip install cliask

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

^{pr2}$

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

Yes or no? |y| EH???
Please enter "yes" or "no"
Yes or no? |y| y
Cow or cat? rabbit
You must say cow or cat
Cow or cat? cat
True
cat

相关问题 更多 >