Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > User input masks - Access Style

Reply
Thread Tools

User input masks - Access Style

 
 
flebber
Guest
Posts: n/a
 
      12-27-2010
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

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?

So an example, sorry.

import time #not sure if this is any use
minute = input("How many minutes: ")
seconds = input("How many seconds: ")
Hundredths = input("how many Hundredths: ")

# convert user input
MyTime = (minute/60)+(seconds)+(Hundredths/1800)
#Display to user assuming i had written a name and user
# had retrieved it
print("[User], your time was"), (MyTime/60:MyTime(MyTime-((MyTime/
60)*60).(MyTime-(MyTime>0))) )



 
Reply With Quote
 
 
 
 
Tim Harig
Guest
Posts: n/a
 
      12-27-2010
On 2010-12-27, flebber <(E-Mail Removed)> 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.
 
Reply With Quote
 
 
 
 
Tim Harig
Guest
Posts: n/a
 
      12-27-2010
On 2010-12-27, Tim Harig <(E-Mail Removed)> wrote:
> ... if re.match(r'''^[0-9]{2}:[0-9]{2}:[0-9]{2}$''', timeInput) == None:

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


Sorry, you need to check to make sure that there are no trailing characters
as in the example above. Checking the beginning is not actually necessary
with match().

r'''^[0-9]+\.[0-9]{2}$'''
 
Reply With Quote
 
flebber
Guest
Posts: n/a
 
      12-27-2010
On Dec 27, 6:01*pm, Tim Harig <(E-Mail Removed)> wrote:
> On 2010-12-27, flebber <(E-Mail Removed)> 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.


yes you are right I should have clarified. The time is a duration over
distance, so its a speed measure. Ultimately I will need to store the
times so I may need to use something likw sqlAlchemy but I am nowehere
near the advanced but I know that most Db's mysql, postgre etc don't
support time as a duration as such and i will probably need to store
it as a decimal and convert it back for the user.
 
Reply With Quote
 
linmq
Guest
Posts: n/a
 
      12-27-2010
> On 2010-12-27, flebber <(E-Mail Removed) > 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. ? don't know of
> any modules that provide "formatted input" in a terminal. ?ost terminal
> input functions just read from stdin (in this case a buffered line)
> and output that as a string. ?t 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. ?ython provides time,
> date, datetime, and timedelta objects that can be used for date/time
> calculations, locale based formatting, etc. ?hat you use, if any, will
> depend on what you are actually tring to accomplish. ?our example doesn't
> really show you doing much with the time so it is difficult giving you any
> concrete recommendations.
>
> yes you are right I should have clarified. The time is a duration over
> distance, so its a speed measure. Ultimately I will need to store the
> times so I may need to use something likw sqlAlchemy but I am nowehere
> near the advanced but I know that most Db's mysql, postgre etc don't
> support time as a duration as such and i will probably need to store
> it as a decimal and convert it back for the user.
> --
> http://mail.python.org/mailman/listinfo/python-list


You can let a user to separately input the days, hours, minutes, etc.
And use the type timedelta to store the time duration:

datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

Beyond 2.7, you can use timedelta.total_seconds() to convert the time
duration to a number for database using. And later restore the number
back to timedelta by timedelta(seconds=?).

Refer to:
http://docs.python.org/library/datet...edelta-objects

--

---------------------------------------------------------------------------------------------------
Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s)
is intended only for the use of the intended recipient and may be confidential and/or privileged of
Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is
not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying
is strictly prohibited, and may be unlawful.If you have received this communication in error,please
immediately notify the sender by return e-mail, and delete the original message and all copies from
your system. Thank you.
---------------------------------------------------------------------------------------------------

 
Reply With Quote
 
flebber
Guest
Posts: n/a
 
      12-27-2010
On Dec 27, 7:57*pm, linmq <(E-Mail Removed)> wrote:
> > On 2010-12-27, flebber *<(E-Mail Removed) > 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. ? don't know of
> > any modules that provide "formatted input" in a terminal. ?ost terminal
> > input functions just read from stdin (in this case a buffered line)
> > and output that as a string. ?t 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. ?ython provides time,
> > date, datetime, and timedelta objects that can be used for date/time
> > calculations, locale based formatting, etc. ?hat you use, if any, will
> > depend on what you are actually tring to accomplish. ?our example doesn't
> > really show you doing much with the time so it is difficult giving you any
> > concrete recommendations.

>
> > yes you are right I should have clarified. The time is a duration over
> > distance, so its a speed measure. *Ultimately I will need to store the
> > times so I may need to use something likw sqlAlchemy but I am nowehere
> > near the advanced but I know that most Db's mysql, postgre etc don't
> > support time as a duration as such and i will probably need to store
> > it as a decimal and convert it back for the user.
> > --
> >http://mail.python.org/mailman/listinfo/python-list

>
> You can let a user to separately input the days, hours, minutes, etc.
> And use the type timedelta to store the time duration:
>
> datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
>
> Beyond 2.7, you can use timedelta.total_seconds() to convert the time
> duration to a number for database using. And later restore the number
> back to timedelta by timedelta(seconds=?).
>
> Refer to:http://docs.python.org/library/datet...timedelta#time...
>
> --
>
> ---------------------------------------------------------------------------------------------------
> Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s)
> is intended only for the use of the intended recipient and may be confidential and/or privileged of
> Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is
> not the intended recipient, unauthorized use, forwarding, printing, *storing, disclosure or copying
> is strictly prohibited, and may be unlawful.If you have received this communication in error,please
> immediately notify the sender by return e-mail, and delete the original message and all copies from
> your system. Thank you.
> ---------------------------------------------------------------------------------------------------


Very helpful thanks
 
Reply With Quote
 
Adam Tauno Williams
Guest
Posts: n/a
 
      12-27-2010
On Sun, 2010-12-26 at 20:37 -0800, flebber 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.


<http://faq.pygtk.org/index.py?file=faq14.022.htp&req=show>

Typically this is handled by a callback on a keypress event.

 
Reply With Quote
 
flebber
Guest
Posts: n/a
 
      12-31-2010
On Dec 28 2010, 12:21*am, Adam Tauno Williams <(E-Mail Removed)>
wrote:
> On Sun, 2010-12-26 at 20:37 -0800, flebber 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.

>
> <http://faq.pygtk.org/index.py?file=faq14.022.htp&req=show>
>
> Typically this is handled by a callback on a keypress event.


Can I get some clarification on the re module specifically on matching
string

Line 137 of the Re module

def match(pattern, string, flags=0):
"""Try to apply the pattern at the start of the string, returning
a match object, or None if no match was found."""
return _compile(pattern, flags).match(string)
 
Reply With Quote
 
flebber
Guest
Posts: n/a
 
      12-31-2010
On Dec 28 2010, 12:21*am, Adam Tauno Williams <(E-Mail Removed)>
wrote:
> On Sun, 2010-12-26 at 20:37 -0800, flebber 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.

>
> <http://faq.pygtk.org/index.py?file=faq14.022.htp&req=show>
>
> Typically this is handled by a callback on a keypress event.


Sorry

Regarding 137 of the re module, relating to the code above.

# 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)

EDIT: I just needed to use raw_input rather than input to stop this
input error.

Please enter time in the format 'MM:SS:HH':
11:12:13
Traceback (most recent call last):
File "C:\Documents and Settings\renshaw\workspace\Testing\src
\Time.py", line 13, in <module>
timeInput = input()
File "C:\Eclipse\plugins\org.python.pydev_1.6.3.2010100 422\PySrc
\pydev_sitecustomize\sitecustomize.py", line 176, in input
return eval(raw_input(prompt))
File "<string>", line 1
11:12:13
^
SyntaxError: invalid syntax

 
Reply With Quote
 
Tim Harig
Guest
Posts: n/a
 
      01-01-2011
On 2010-12-31, flebber <(E-Mail Removed)> wrote:
> On Dec 28 2010, 12:21*am, Adam Tauno Williams <(E-Mail Removed)>
> wrote:
>> On Sun, 2010-12-26 at 20:37 -0800, flebber 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.

>>
>> <http://faq.pygtk.org/index.py?file=faq14.022.htp&req=show>
>>
>> Typically this is handled by a callback on a keypress event.

>
> Regarding 137 of the re module, relating to the code above.


137? I am not sure what you are referencing?

> EDIT: I just needed to use raw_input rather than input to stop this
> input error.


Sorry, I used input() because that is what you had used in your example
and it worked for my system. Normally, I would have used window.getstr()
from the curses module, or whatever the platform equivilant is, for
getting line buffered input.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Creating masks for photographs? john Computer Support 0 10-19-2005 07:27 PM
A technique for compile-time detection of erroneous bit-masks -opinionsrequested Gianni Mariani C++ 0 01-13-2005 07:24 AM
6500 MSFC and HSRP subnet masks GJP Cisco 1 12-09-2004 01:44 PM
Why Wildcard masks Prashant Varghese Cisco 3 11-08-2004 11:19 AM
Need help with Style conversion from Style object to Style key/value collection. Ken Varn ASP .Net Building Controls 0 04-26-2004 07:06 PM



Advertisments