8000 Some minor code changes in chemical_formulas.py · pyparsing/pyparsing@d7c163c · GitHub
[go: up one dir, main page]

Skip to content

Commit d7c163c

Browse files
committed
Some minor code changes in chemical_formulas.py
1 parent eb56030 commit d7c163c

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

examples/chemical_formulas.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
# "E[rsu]|F[emr]?|G[ade]|H[efgos]?|I[nr]?|Kr?|L[airu]|"
2424
# "M[dgnot]|N[abdeiop]?|Os?|P[abdmortu]?|R[abefghnu]|"
2525
# "S[bcegimnr]?|T[abcehilm]|U(u[bhopqst])?|V|W|Xe|Yb?|Z[nr]")
26-
element_ref = pp.Group(element + pp.Opt(pp.Word(digits), default="1"))
26+
element_ref = pp.Group(element + pp.Optional(pp.Word(digits), default="1"))
2727
formula = element_ref[...]
2828

2929

@@ -33,9 +33,9 @@ def sum_atomic_weights(element_list):
3333

3434
formula.run_tests(
3535
"""\
36+
NaCl
3637
H2O
3738
C6H5OH
38-
NaCl
3939
""",
4040
full_dump=False,
4141
post_parse=lambda _, tokens: f"Molecular weight: {sum_atomic_weights(tokens)}",
@@ -45,7 +45,7 @@ def sum_atomic_weights(element_list):
4545

4646
# Version 2 - access parsed items by results name
4747
element_ref = pp.Group(
48-
element("symbol") + pp.Opt(pp.Word(digits), default="1")("qty")
48+
element("symbol") + pp.Optional(pp.Word(digits), default="1")("qty")
4949
)
5050
formula = element_ref[...]
5151

@@ -56,9 +56,9 @@ def sum_atomic_weights_by_results_name(element_list):
5656

5757
formula.run_tests(
5858
"""\
59+
NaCl
5960
H2O
6061
C6H5OH
61-
NaCl
6262
""",
6363
full_dump=False,
6464
post_parse=lambda _, tokens:
@@ -69,7 +69,7 @@ def sum_atomic_weights_by_results_name(element_list):
6969
# Version 3 - convert integers during parsing process
7070
integer = pp.Word(digits).set_name("integer")
7171
integer.add_parse_action(lambda t: int(t[0]))
72-
element_ref = pp.Group(element("symbol") + pp.Opt(integer, default=1)("qty"))
72+
element_ref = pp.Group(element("symbol") + pp.Optional(integer, default=1)("qty"))
7373
formula = element_ref[...].set_name("chemical_formula")
7474

7575

@@ -79,9 +79,9 @@ def sum_atomic_weights_by_results_name_with_converted_ints(element_list):
7979

8080
formula.run_tests(
8181
"""\
82+
NaCl
8283
H2O
8384
C6H5OH
84-
NaCl
8585
""",
8686
full_dump=False,
8787
post_parse=lambda _, tokens:
@@ -91,7 +91,7 @@ def sum_atomic_weights_by_results_name_with_converted_ints(element_list):
9191

9292
# Version 4 - parse and convert integers as subscript digits
9393
subscript_digits = "₀₁₂₃₄₅₆₇₈₉"
94-
subscript_int_map = {e[1]: e[0] for e in enumerate(subscript_digits)}
94+
subscript_int_map = {digit: value for value, digit in enumerate(subscript_digits)}
9595

9696

9797
def cvt_subscript_int(s):
@@ -104,13 +104,20 @@ def cvt_subscript_int(s):
104104
subscript_int = pp.Word(subscript_digits).set_name("subscript")
105105
subscript_int.add_parse_action(cvt_subscript_int)
106106

107-
element_ref = pp.Group(element("symbol") + pp.Opt(subscript_int, default=1)("qty"))
107+
element_ref = pp.Group(element("symbol") + pp.Optional(subscript_int, default=1)("qty"))
108108
formula = element_ref[1, ...].set_name("chemical_formula")
109109
formula.run_tests(
110110
"""\
111+
# sodium chloride
112+
NaCl
113+
# hydrogen hydroxide
111114
H₂O
115+
# phenol
112116
C₆H₅OH
113-
NaCl
117+
# ethanol
118+
C₂H₅OH
119+
# decanol
120+
C₁₀H₂₁OH
114121
""",
115122
full_dump=False,
116123
post_parse=lambda _, tokens:

0 commit comments

Comments
 (0)
0