Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #79857 > unrolled thread
| Started by | satishmlmlml@gmail.com |
|---|---|
| First post | 2014-10-28 14:41 -0700 |
| Last post | 2014-10-29 08:40 +0000 |
| Articles | 9 — 5 participants |
Back to article view | Back to comp.lang.python
% symbol in python satishmlmlml@gmail.com - 2014-10-28 14:41 -0700
Re: % symbol in python Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-10-28 22:17 +0000
Re:% symbol in python Dave Angel <davea@davea.name> - 2014-10-28 21:57 -0400
Re: % symbol in python satishmlmlml@gmail.com - 2014-10-28 20:51 -0700
Re: % symbol in python Chris Angelico <rosuav@gmail.com> - 2014-10-29 15:02 +1100
Re: % symbol in python satishmlmlml@gmail.com - 2014-10-28 21:41 -0700
Re: % symbol in python alex23 <wuwei23@gmail.com> - 2014-10-29 15:25 +1000
Re: % symbol in python satishmlmlml@gmail.com - 2014-10-28 22:48 -0700
Re: % symbol in python Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-10-29 08:40 +0000
| From | satishmlmlml@gmail.com |
|---|---|
| Date | 2014-10-28 14:41 -0700 |
| Subject | % symbol in python |
| Message-ID | <b80ee29c-e23a-4f11-9c65-746f7d74c347@googlegroups.com> |
<tr><th>key<td><input type=text name=key value="%(key)s"> rowhtml = '<tr><th>%s<td><input type=text name=%s value"%%(%s)s">\n" what does % mean in first line of code and what does %%(%s)s mean in second line of code kindly explain
[toc] | [next] | [standalone]
| From | Mark Lawrence <breamoreboy@yahoo.co.uk> |
|---|---|
| Date | 2014-10-28 22:17 +0000 |
| Message-ID | <mailman.15272.1414534647.18130.python-list@python.org> |
| In reply to | #79857 |
On 28/10/2014 21:41, satishmlmlml@gmail.com wrote: > <tr><th>key<td><input type=text name=key value="%(key)s"> > rowhtml = '<tr><th>%s<td><input type=text name=%s value"%%(%s)s">\n" > > what does % mean in first line of code and > what does %%(%s)s mean in second line of code > > kindly explain > Please refer to https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting -- My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language. Mark Lawrence
[toc] | [prev] | [next] | [standalone]
| From | Dave Angel <davea@davea.name> |
|---|---|
| Date | 2014-10-28 21:57 -0400 |
| Message-ID | <mailman.15276.1414547634.18130.python-list@python.org> |
| In reply to | #79857 |
satishmlmlml@gmail.com Wrote in message: > <tr><th>key<td><input type=text name=key value="%(key)s"> > rowhtml = '<tr><th>%s<td><input type=text name=%s value"%%(%s)s">\n" > > what does % mean in first line of code and > what does %%(%s)s mean in second line of code > > kindly explain > Please post Python code, and we can try to comment on it. Those extra <tr> and <th> thingies are really killing my mental syntax checker. Also, always specify the python version. -- DaveA
[toc] | [prev] | [next] | [standalone]
| From | satishmlmlml@gmail.com |
|---|---|
| Date | 2014-10-28 20:51 -0700 |
| Message-ID | <9a7bada3-6a2c-49c1-9806-cbf690a350b8@googlegroups.com> |
| In reply to | #79865 |
import cgi, shelve, sys, os
shelvename = 'class-shelve'
fieldnames = ('name', 'age', 'job', 'pay')
form = cgi.FieldStorage()
print('Content-type: text/html')
sys.path.insert(0, os.getcwd())
replyhtml = """
<html>
<title>People Input Form</title>
<body>
<form method=POST action="peoplecgi.py">
<table>
<tr><th>key<td><input type=text name=key value="%(key)s">
$ROWS$
</table>
<p>
<input type=submit value="Fetch", name=action>
<input type=submit value="Update", name=action>
</form>
</body></html>
"""
rowhtml = '<tr><th>%s<td><input type=text name=%s value="%%(%s)s">\n'
rowshtml = ''
for fieldname in fieldnames:
rowshtml += (rowhtml % ((fieldname, ) * 3))
replyhtml = replyhtml.replace('$ROWS$', rowshtml)
def htmlize(adict):
new = adict.copy()
for field in fieldnames:
value = new[field]
new[field] = cgi.escape(repr(value))
return new
def fetchRecord(db, form):
try:
key = form['key'].value
record = db[key]
fields = record.__dict__
fields['key'] = key
except:
fields = dict.fromkeys(fieldnames, '?')
fields['key'] = 'Missing or invalid key!'
return fields
def updateRecord(db, form):
if not 'key' in form:
fields = dict.fromkeys(fieldnames, '?')
fields['key'] = 'Missing key input!'
else:
key = form['key'].value
if key in db:
record = db[key]
else:
from person import Person
record = Person(name='?', age='?')
for field in fieldnames:
setattr(record, field, eval(form[field].value))
db[key] = record
fields = record.__dict__
fields['key'] = key
return fields
db = shelve.open(shelvename)
action = form['action'].value if 'action' in form else None
if action == 'Fetch':
fields = fetchRecord(db, form)
elif action == 'Update':
fields = updateRecord(db, form)
else:
fields = dict.fromkeys(fieldnames, '?')
fields['key'] = 'Missing or invalid action!'
db.close()
print(replyhtml % htmlize(fields))
[toc] | [prev] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2014-10-29 15:02 +1100 |
| Message-ID | <mailman.15280.1414555330.18130.python-list@python.org> |
| In reply to | #79874 |
On Wed, Oct 29, 2014 at 2:51 PM, <satishmlmlml@gmail.com> wrote: > def fetchRecord(db, form): > try: > key = form['key'].value When you paste Python code into an email, it's absolutely crucial that you maintain formatting. The indentation is significant. Can you paste it again, please? ChrisA
[toc] | [prev] | [next] | [standalone]
| From | satishmlmlml@gmail.com |
|---|---|
| Date | 2014-10-28 21:41 -0700 |
| Message-ID | <77e77ae3-315e-4c3e-aedf-f501c8a217a7@googlegroups.com> |
| In reply to | #79875 |
import cgi, shelve, sys, os
shelvename = 'class-shelve'
fieldnames = ('name', 'age', 'job', 'pay')
form = cgi.FieldStorage()
print('Content-type: text/html')
sys.path.insert(0, os.getcwd())
replyhtml = """
<html>
<title>People Input Form</title>
<body>
<form method=POST action="peoplecgi.py">
<table>
<tr><th>key<td><input type=text name=key value="%(key)s">
$ROWS$
</table>
<p>
<input type=submit value="Fetch", name=action>
<input type=submit value="Update", name=action>
</form>
</body></html>
"""
rowhtml = '<tr><th>%s<td><input type=text name=%s value="%%(%s)s">\n'
rowshtml = ''
for fieldname in fieldnames:
rowshtml += (rowhtml % ((fieldname, ) * 3))
replyhtml = replyhtml.replace('$ROWS$', rowshtml)
def htmlize(adict):
new = adict.copy()
for field in fieldnames:
value = new[field]
new[field] = cgi.escape(repr(value))
return new
def fetchRecord(db, form):
try:
key = form['key'].value
record = db[key]
fields = record.__dict__
fields['key'] = key
except:
fields = dict.fromkeys(fieldnames, '?')
fields['key'] = 'Missing or invalid key!'
return fields
def updateRecord(db, form):
if not 'key' in form:
fields = dict.fromkeys(fieldnames, '?')
fields['key'] = 'Missing key input!'
else:
key = form['key'].value
if key in db:
record = db[key]
else:
from person import Person
record = Person(name='?', age='?')
for field in fieldnames:
setattr(record, field, eval(form[field].value))
db[key] = record
fields = record.__dict__
fields['key'] = key
return fields
db = shelve.open(shelvename)
action = form['action'].value if 'action' in form else None
if action == 'Fetch':
fields = fetchRecord(db, form)
elif action == 'Update':
fields = updateRecord(db, form)
else:
fields = dict.fromkeys(fieldnames, '?')
fields['key'] = 'Missing or invalid action!'
db.close()
print(replyhtml % htmlize(fields))
kindly let me know what is $ROWS$ along with % symbol's meaning
[toc] | [prev] | [next] | [standalone]
| From | alex23 <wuwei23@gmail.com> |
|---|---|
| Date | 2014-10-29 15:25 +1000 |
| Message-ID | <m2ptoj$hnv$1@dont-email.me> |
| In reply to | #79879 |
On 29/10/2014 2:41 PM, satishmlmlml@gmail.com wrote:
> kindly let me know what is $ROWS$ along with % symbol's meaning
It's a token, a static value added to the template to indicate where
additional data will be added.
So $ROW$ in this section:
> <table>
> <tr><th>key<td><input type=text name=key value="%(key)s">
> $ROWS$
> </table>
Will be replaced by whatever rowshtml contains at this point:
> replyhtml = replyhtml.replace('$ROWS$', rowshtml)
Of note: the template section above has opening tags for <tr>, <th> and
<td> but no closing ones. It's not valid html.
Also I don't think this is doing what you think it is:
> rowhtml = '<tr><th>%s<td><input type=text name=%s value="%%(%s)s">\n'
> rowshtml = ''
> for fieldname in fieldnames:
> rowshtml += (rowhtml % ((fieldname, ) * 3))
> replyhtml = replyhtml.replace('$ROWS$', rowshtml)
After the first fieldname ('name' in this case), the token $ROWS$ will
be replaced by the string :
'<tr><th>name<td><input type=text name=name value="%%(name)s">\n'.
On the second iteration of the loop, when fieldname is 'age', rowshtml
will equal:
'<tr><th>name<td><input type=text name=name
value="%%(name)s">\n<tr><th>age<td><input type=text name=age
value="%%(age)s">\n'
...but nothing will happen with it as $ROWS$ has already been replaced
during the first time through the loop. Either the `replyhtml = ...`
line is mis-indented or the code is terribly broken.
Unless this is for homework, I highly recommend just using one of the
many templating libraries that exist for Python, such as Jinja2.
[toc] | [prev] | [next] | [standalone]
| From | satishmlmlml@gmail.com |
|---|---|
| Date | 2014-10-28 22:48 -0700 |
| Message-ID | <a1636d18-3ddd-45d7-8c9e-022bb43e81ed@googlegroups.com> |
| In reply to | #79884 |
kindly let me know what does %%(%s)% mean
[toc] | [prev] | [next] | [standalone]
| From | Mark Lawrence <breamoreboy@yahoo.co.uk> |
|---|---|
| Date | 2014-10-29 08:40 +0000 |
| Message-ID | <mailman.15290.1414572062.18130.python-list@python.org> |
| In reply to | #79888 |
On 29/10/2014 05:48, satishmlmlml@gmail.com wrote: > kindly let me know > what does > %%(%s)% mean > What did you not understand from the link I posted ten hours ago? -- My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language. Mark Lawrence
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.python
csiph-web