HighLine is a Ruby library for easing console input and output. It provides methods that lets you request input and validate it. Is there something that provides functionality similar to it in Python?
To show what HighLine does see the following example:
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
It asks "Yes or no? " and lets the user input something. As long as the user does not input y or n (case-insensitive) it prints "Answer y or n for yes or no" and lets the user type an answer again. Also if the user press Enter it defaults to y. Finally, when it is done the input is stored in input
. Here is an example result where the user first input "EH???" and then "y":
Yes or no? |y| EH??? Answer y or n for yes or no ? y
Is there similarly simple way to do the same in Python?