From 27e183a78c8062ed7c2bbb91655a5e56cd697bba Mon Sep 17 00:00:00 2001 From: Cengiz Kaygusuz Date: Mon, 20 Nov 2017 20:46:39 -0500 Subject: Move src to root --- examples/numerics.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 examples/numerics.py (limited to 'examples/numerics.py') diff --git a/examples/numerics.py b/examples/numerics.py new file mode 100644 index 0000000..5ab99dd --- /dev/null +++ b/examples/numerics.py @@ -0,0 +1,62 @@ +# +# numerics.py +# +# Examples of parsing real and integers using various grouping and +# decimal point characters, varying by locale. +# +# Copyright 2016, Paul McGuire +# +# Format samples from https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html +# +tests = """\ +# Canadian (English and French) +4 294 967 295,000 + +# Danish +4 294 967 295,000 + +# Finnish +4 294 967 295,000 + +# French +4 294 967 295,000 + +# German +4 294 967 295,000 + +# Italian +4.294.967.295,000 + +# Norwegian +4.294.967.295,000 + +# Spanish +4.294.967.295,000 + +# Swedish +4 294 967 295,000 + +# GB-English +4,294,967,295.000 + +# US-English +4,294,967,295.000 + +# Thai +4,294,967,295.000 +""" + +from pyparsing import Regex + +comma_decimal = Regex(r'\d{1,2}(([ .])\d\d\d(\2\d\d\d)*)?,\d*') +comma_decimal.setParseAction(lambda t: float(t[0].replace(' ','').replace('.','').replace(',','.'))) + +dot_decimal = Regex(r'\d{1,2}(([ ,])\d\d\d(\2\d\d\d)*)?\.\d*') +dot_decimal.setParseAction(lambda t: float(t[0].replace(' ','').replace(',',''))) + +decimal = comma_decimal ^ dot_decimal +decimal.runTests(tests, parseAll=True) + +grouped_integer = Regex(r'\d{1,2}(([ .,])\d\d\d(\2\d\d\d)*)?') +grouped_integer.setParseAction(lambda t: int(t[0].replace(' ','').replace(',','').replace('.',''))) +grouped_integer.runTests(tests, parseAll=False) -- cgit v1.2.1