summaryrefslogtreecommitdiff
path: root/examples/parseListString.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/parseListString.py
parent41752aa52cc97c710474bb2972cceab057b52ad4 (diff)
downloadpyparsing-git-53d1b4a6f48a53c4c4ec4ac7031362b691c0366d.tar.gz
Blacken the project (#141)
Diffstat (limited to 'examples/parseListString.py')
-rw-r--r--examples/parseListString.py84
1 files changed, 57 insertions, 27 deletions
diff --git a/examples/parseListString.py b/examples/parseListString.py
index d5723b0..f34f614 100644
--- a/examples/parseListString.py
+++ b/examples/parseListString.py
@@ -9,8 +9,9 @@ from pyparsing import *
lbrack = Literal("[")
rbrack = Literal("]")
integer = Word(nums).setName("integer")
-real = Combine(Optional(oneOf("+ -")) + Word(nums) + "." +
- Optional(Word(nums))).setName("real")
+real = Combine(
+ Optional(oneOf("+ -")) + Word(nums) + "." + Optional(Word(nums))
+).setName("real")
listItem = real | integer | quotedString
@@ -24,11 +25,11 @@ print(listStr.parseString(test))
# second pass, cleanup and add converters
lbrack = Literal("[").suppress()
rbrack = Literal("]").suppress()
-cvtInt = lambda s,l,toks: int(toks[0])
-integer = Word(nums).setName("integer").setParseAction( cvtInt )
-cvtReal = lambda s,l,toks: float(toks[0])
-real = Regex(r'[+-]?\d+\.\d*').setName("floating-point number").setParseAction( cvtReal )
-listItem = real | integer | quotedString.setParseAction( removeQuotes )
+cvtInt = lambda s, l, toks: int(toks[0])
+integer = Word(nums).setName("integer").setParseAction(cvtInt)
+cvtReal = lambda s, l, toks: float(toks[0])
+real = Regex(r"[+-]?\d+\.\d*").setName("floating-point number").setParseAction(cvtReal)
+listItem = real | integer | quotedString.setParseAction(removeQuotes)
listStr = lbrack + delimitedList(listItem) + rbrack
@@ -37,46 +38,75 @@ test = "['a', 100, 3.14]"
print(listStr.parseString(test))
# third pass, add nested list support, and tuples, too!
-cvtInt = lambda s,l,toks: int(toks[0])
-cvtReal = lambda s,l,toks: float(toks[0])
+cvtInt = lambda s, l, toks: int(toks[0])
+cvtReal = lambda s, l, toks: float(toks[0])
lbrack = Literal("[").suppress()
rbrack = Literal("]").suppress()
-integer = Word(nums).setName("integer").setParseAction( cvtInt )
-real = Regex(r'[+-]?\d+\.\d*').setName("floating-point number").setParseAction( cvtReal )
+integer = Word(nums).setName("integer").setParseAction(cvtInt)
+real = Regex(r"[+-]?\d+\.\d*").setName("floating-point number").setParseAction(cvtReal)
tupleStr = Forward()
listStr = Forward()
-listItem = real | integer | quotedString.setParseAction(removeQuotes) | Group(listStr) | tupleStr
-tupleStr << ( Suppress("(") + delimitedList(listItem) + Optional(Suppress(",")) + Suppress(")") )
-tupleStr.setParseAction( lambda t:tuple(t.asList()) )
+listItem = (
+ real
+ | integer
+ | quotedString.setParseAction(removeQuotes)
+ | Group(listStr)
+ | tupleStr
+)
+tupleStr << (
+ Suppress("(") + delimitedList(listItem) + Optional(Suppress(",")) + Suppress(")")
+)
+tupleStr.setParseAction(lambda t: tuple(t.asList()))
listStr << lbrack + delimitedList(listItem) + Optional(Suppress(",")) + rbrack
test = "['a', 100, ('A', [101,102]), 3.14, [ +2.718, 'xyzzy', -1.414] ]"
print(listStr.parseString(test))
# fourth pass, add parsing of dicts
-cvtInt = lambda s,l,toks: int(toks[0])
-cvtReal = lambda s,l,toks: float(toks[0])
-cvtDict = lambda s,l,toks: dict(toks[0])
+cvtInt = lambda s, l, toks: int(toks[0])
+cvtReal = lambda s, l, toks: float(toks[0])
+cvtDict = lambda s, l, toks: dict(toks[0])
lbrack = Literal("[").suppress()
rbrack = Literal("]").suppress()
lbrace = Literal("{").suppress()
rbrace = Literal("}").suppress()
colon = Literal(":").suppress()
-integer = Word(nums).setName("integer").setParseAction( cvtInt )
-real = Regex(r'[+-]?\d+\.\d*').setName("real").setParseAction( cvtReal )
+integer = Word(nums).setName("integer").setParseAction(cvtInt)
+real = Regex(r"[+-]?\d+\.\d*").setName("real").setParseAction(cvtReal)
tupleStr = Forward()
listStr = Forward()
dictStr = Forward()
-listItem = real | integer | quotedString.setParseAction(removeQuotes) | Group(listStr) | tupleStr | dictStr
-tupleStr <<= ( Suppress("(") + delimitedList(listItem) + Optional(Suppress(",")) + Suppress(")") )
-tupleStr.setParseAction( lambda t:tuple(t.asList()) )
-listStr <<= (lbrack + Optional(delimitedList(listItem)) + Optional(Suppress(",")) + rbrack)
+listItem = (
+ real
+ | integer
+ | quotedString.setParseAction(removeQuotes)
+ | Group(listStr)
+ | tupleStr
+ | dictStr
+)
+tupleStr <<= (
+ Suppress("(") + delimitedList(listItem) + Optional(Suppress(",")) + Suppress(")")
+)
+tupleStr.setParseAction(lambda t: tuple(t.asList()))
+listStr <<= (
+ lbrack + Optional(delimitedList(listItem)) + Optional(Suppress(",")) + rbrack
+)
dictKeyStr = real | integer | quotedString.setParseAction(removeQuotes)
-dictStr <<= lbrace + Optional(delimitedList( Group( dictKeyStr + colon + listItem ))) + Optional(Suppress(",")) + rbrace
-dictStr.setParseAction(lambda t: {k_v[0]:(k_v[1].asList() if isinstance(k_v[1],ParseResults) else k_v[1]) for k_v in t})
-
-test = '[{0: [2], 1: []}, {0: [], 1: [], 2: [,]}, {0: [1, 2,],}]'
+dictStr <<= (
+ lbrace
+ + Optional(delimitedList(Group(dictKeyStr + colon + listItem)))
+ + Optional(Suppress(","))
+ + rbrace
+)
+dictStr.setParseAction(
+ lambda t: {
+ k_v[0]: (k_v[1].asList() if isinstance(k_v[1], ParseResults) else k_v[1])
+ for k_v in t
+ }
+)
+
+test = "[{0: [2], 1: []}, {0: [], 1: [], 2: [,]}, {0: [1, 2,],}]"
print(listStr.parseString(test))