File: //snap/google-cloud-cli/396/platform/gsutil/third_party/pyparsing/examples/withAttribute.py
#
# withAttribute.py
# Copyright, 2007 - Paul McGuire
#
# Simple example of using withAttribute parse action helper
# to define
#
import pyparsing as pp
data = """\
<td align=right width=80><font size=2 face="New Times Roman,Times,Serif"> 49.950 </font></td>
<td align=left width=80><font size=2 face="New Times Roman,Times,Serif"> 50.950 </font></td>
<td align=right width=80><font size=2 face="New Times Roman,Times,Serif"> 51.950 </font></td>
"""
td, tdEnd = pp.makeHTMLTags("TD")
font, fontEnd = pp.makeHTMLTags("FONT")
realNum = pp.pyparsing_common.real
NBSP = pp.Literal(" ")
patt = td + font + NBSP + realNum("value") + NBSP + fontEnd + tdEnd
# always use addParseAction when adding withAttribute as a parse action to a start tag
td.addParseAction(pp.withAttribute(align="right", width="80"))
for s in patt.searchString(data):
print(s.value)