summaryrefslogtreecommitdiff
path: root/examples/chemicalFormulas.py
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2019-10-31 21:10:28 -0700
committerPaul McGuire <ptmcg@users.noreply.github.com>2019-10-31 23:10:28 -0500
commit53d1b4a6f48a53c4c4ec4ac7031362b691c0366d (patch)
tree088ad3cf3561b78a00af4fb2fd474f4a2b8ca70c /examples/chemicalFormulas.py
parent41752aa52cc97c710474bb2972cceab057b52ad4 (diff)
downloadpyparsing-git-53d1b4a6f48a53c4c4ec4ac7031362b691c0366d.tar.gz
Blacken the project (#141)
Diffstat (limited to 'examples/chemicalFormulas.py')
-rw-r--r--examples/chemicalFormulas.py60
1 files changed, 40 insertions, 20 deletions
diff --git a/examples/chemicalFormulas.py b/examples/chemicalFormulas.py
index 1b41871..f4725ed 100644
--- a/examples/chemicalFormulas.py
+++ b/examples/chemicalFormulas.py
@@ -7,12 +7,12 @@
import pyparsing as pp
atomicWeight = {
- "O" : 15.9994,
- "H" : 1.00794,
- "Na" : 22.9897,
- "Cl" : 35.4527,
- "C" : 12.0107,
- }
+ "O": 15.9994,
+ "H": 1.00794,
+ "Na": 22.9897,
+ "Cl": 35.4527,
+ "C": 12.0107,
+}
digits = "0123456789"
@@ -26,58 +26,78 @@ element = pp.Word(pp.alphas.upper(), pp.alphas.lower(), max=2)
elementRef = pp.Group(element + pp.Optional(pp.Word(digits), default="1"))
formula = elementRef[...]
-fn = lambda elemList : sum(atomicWeight[elem]*int(qty) for elem,qty in elemList)
-formula.runTests("""\
+fn = lambda elemList: sum(atomicWeight[elem] * int(qty) for elem, qty in elemList)
+formula.runTests(
+ """\
H2O
C6H5OH
NaCl
""",
- fullDump=False, postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)))
+ fullDump=False,
+ postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)),
+)
print()
# Version 2 - access parsed items by results name
-elementRef = pp.Group(element("symbol") + pp.Optional(pp.Word(digits), default="1")("qty"))
+elementRef = pp.Group(
+ element("symbol") + pp.Optional(pp.Word(digits), default="1")("qty")
+)
formula = elementRef[...]
-fn = lambda elemList : sum(atomicWeight[elem.symbol]*int(elem.qty) for elem in elemList)
-formula.runTests("""\
+fn = lambda elemList: sum(
+ atomicWeight[elem.symbol] * int(elem.qty) for elem in elemList
+)
+formula.runTests(
+ """\
H2O
C6H5OH
NaCl
""",
- fullDump=False, postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)))
+ fullDump=False,
+ postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)),
+)
print()
# Version 3 - convert integers during parsing process
-integer = pp.Word(digits).setParseAction(lambda t:int(t[0]))
+integer = pp.Word(digits).setParseAction(lambda t: int(t[0]))
elementRef = pp.Group(element("symbol") + pp.Optional(integer, default=1)("qty"))
formula = elementRef[...]
-fn = lambda elemList : sum(atomicWeight[elem.symbol]*elem.qty for elem in elemList)
-formula.runTests("""\
+fn = lambda elemList: sum(atomicWeight[elem.symbol] * elem.qty for elem in elemList)
+formula.runTests(
+ """\
H2O
C6H5OH
NaCl
""",
- fullDump=False, postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)))
+ fullDump=False,
+ postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)),
+)
print()
# Version 4 - parse and convert integers as subscript digits
subscript_digits = "₀₁₂₃₄₅₆₇₈₉"
subscript_int_map = {e[1]: e[0] for e in enumerate(subscript_digits)}
+
+
def cvt_subscript_int(s):
ret = 0
for c in s[0]:
- ret = ret*10 + subscript_int_map[c]
+ ret = ret * 10 + subscript_int_map[c]
return ret
+
+
subscript_int = pp.Word(subscript_digits).addParseAction(cvt_subscript_int)
elementRef = pp.Group(element("symbol") + pp.Optional(subscript_int, default=1)("qty"))
formula = elementRef[...]
-formula.runTests("""\
+formula.runTests(
+ """\
H₂O
C₆H₅OH
NaCl
""",
- fullDump=False, postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)))
+ fullDump=False,
+ postParse=lambda _, tokens: "Molecular weight: {}".format(fn(tokens)),
+)
print()