User input masks - Access Style

Tim Harig usernet at ilthio.net
Mon Dec 27 02:01:26 EST 2010


On 2010-12-27, flebber <flebber.crue at gmail.com> wrote:
> Is there anyay to use input masks in python? Similar to the function
> found in access where a users input is limited to a type, length and
> format.
>
> So in my case I want to ensure that numbers are saved in a basic
> format.
> 1) Currency so input limited to 000.00 eg 1.00, 2.50, 13.80 etc

Some GUIs provide this functionality or provide callbacks for validation
functions that can determine the validity of the input.  I don't know of
any modules that provide "formatted input" in a terminal.  Most terminal
input functions just read from stdin (in this case a buffered line)
and output that as a string.  It is easy enough to validate whether
terminal input is in the proper.

Your example time code might look like:

... import re
... import sys
... 
... # get the input
... print("Please enter time in the format 'MM:SS:HH': ", end="")
... timeInput = input()
... 
... # validate the input is in the correct format (usually this would be in
... # loop that continues until the user enters acceptable data)
... if re.match(r'''^[0-9]{2}:[0-9]{2}:[0-9]{2}$''', timeInput) == None:
...     print("I'm sorry, your input is improperly formated.")
...     sys.exit(1)
... 
... # break the input into its componets
... componets = timeInput.split(":")
... minutes = int(componets[0])
... seconds = int(componets[1])
... microseconds = int(componets[2])
... 
... # output the time
... print("Your time is: " + "%02d" % minutes + ":" + "%02d" % seconds + ":" +
...     "%02d" % microseconds)

Currency works the same way using validating it against:
r'''[0-9]+\.[0-9]{2}'''

> For sports times that is time duration not a system or date times
> should I assume that I would need to calculate a user input to a
> decimal number and then recalculate it to present it to user?

I am not sure what you are trying to do or asking.  Python provides time,
date, datetime, and timedelta objects that can be used for date/time
calculations, locale based formatting, etc.  What you use, if any, will
depend on what you are actually tring to accomplish.  Your example doesn't
really show you doing much with the time so it is difficult giving you any
concrete recommendations.



More information about the Python-list mailing list