summaryrefslogtreecommitdiff
path: root/trunk/src/examples/parseTabularData.py
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/examples/parseTabularData.py')
-rw-r--r--trunk/src/examples/parseTabularData.py50
1 files changed, 0 insertions, 50 deletions
diff --git a/trunk/src/examples/parseTabularData.py b/trunk/src/examples/parseTabularData.py
deleted file mode 100644
index 3846310..0000000
--- a/trunk/src/examples/parseTabularData.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# parseTabularData.py
-#
-# Example of parsing data that is formatted in a tabular listing, with
-# potential for missing values. Uses new addCondition method on
-# ParserElements.
-#
-# Copyright 2015, Paul McGuire
-#
-from pyparsing import col,Word,Optional,alphas,nums,ParseException
-
-table = """\
- 1 2
-12345678901234567890
-COLOR S M L
-RED 10 2 2
-BLUE 5 10
-GREEN 3 5
-PURPLE 8"""
-
-# function to create column-specific parse conditions
-def mustMatchCols(startloc,endloc):
- return lambda s,l,t: startloc <= col(l,s) <= endloc
-
-# helper to define values in a space-delimited table
-# (change empty_cell_is_zero to True if a value of 0 is desired for empty cells)
-def tableValue(expr, colstart, colend):
- empty_cell_is_zero = False
- if empty_cell_is_zero:
- return Optional(expr.copy().addCondition(mustMatchCols(colstart,colend),
- message="text not in expected columns"),
- default=0)
- else:
- return Optional(expr.copy().addCondition(mustMatchCols(colstart,colend),
- message="text not in expected columns"))
-
-
-# define the grammar for this simple table
-colorname = Word(alphas)
-integer = Word(nums).setParseAction(lambda t: int(t[0])).setName("integer")
-row = (colorname("name") +
- tableValue(integer, 11, 12)("S") +
- tableValue(integer, 15, 16)("M") +
- tableValue(integer, 19, 20)("L"))
-
-# parse the sample text - skip over the header and counter lines
-for line in table.splitlines()[3:]:
- print(line)
- print(row.parseString(line).dump())
- print('')