HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //snap/google-cloud-cli/394/platform/gsutil/third_party/pyparsing/examples/dictExample2.py
#
# dictExample2.py
#
#  Illustration of using pyparsing's Dict class to process tabular data
#  Enhanced Dict example, courtesy of Mike Kelly
#
# Copyright (c) 2004, Paul McGuire
#
from pyparsing import (
    Literal,
    Word,
    Group,
    Dict,
    ZeroOrMore,
    alphas,
    nums,
    delimitedList,
    pyparsing_common as ppc,
)

testData = """
+-------+------+------+------+------+------+------+------+------+
|       |  A1  |  B1  |  C1  |  D1  |  A2  |  B2  |  C2  |  D2  |
+=======+======+======+======+======+======+======+======+======+
| min   |   7  |  43  |   7  |  15  |  82  |  98  |   1  |  37  |
| max   |  11  |  52  |  10  |  17  |  85  | 112  |   4  |  39  |
| ave   |   9  |  47  |   8  |  16  |  84  | 106  |   3  |  38  |
| sdev  |   1  |   3  |   1  |   1  |   1  |   3  |   1  |   1  |
+-------+------+------+------+------+------+------+------+------+
"""

# define grammar for datatable
underline = Word("-=")
number = ppc.integer

vert = Literal("|").suppress()

rowDelim = ("+" + ZeroOrMore(underline + "+")).suppress()
columnHeader = Group(vert + vert + delimitedList(Word(alphas + nums), "|") + vert)

heading = rowDelim + columnHeader("columns") + rowDelim
rowData = Group(vert + Word(alphas) + vert + delimitedList(number, "|") + vert)
trailing = rowDelim

datatable = heading + Dict(ZeroOrMore(rowData)) + trailing

# now parse data and print results
data = datatable.parseString(testData)
print(data.dump())
print("data keys=", list(data.keys()))
print("data['min']=", data["min"])
print("sum(data['min']) =", sum(data["min"]))
print("data.max =", data.max)
print("sum(data.max) =", sum(data.max))

# now print transpose of data table, using column labels read from table header and
# values from data lists
print()
print(" " * 5, end=" ")
for i in range(1, len(data)):
    print("|%5s" % data[i][0], end=" ")
print()
print(("-" * 6) + ("+------" * (len(data) - 1)))
for i in range(len(data.columns)):
    print("%5s" % data.columns[i], end=" ")
    for j in range(len(data) - 1):
        print("|%5s" % data[j + 1][i + 1], end=" ")
    print()