From e2a55aa2a37207aec7de5a1a5f3cb408c500c182 Mon Sep 17 00:00:00 2001 From: Christophe Combelles Date: Wed, 1 Mar 2023 21:14:07 +0100 Subject: [PATCH] Support '10^' as '10E' (fix #156) --- bw2io/extractors/simapro_csv.py | 2 +- tests/simapro.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/bw2io/extractors/simapro_csv.py b/bw2io/extractors/simapro_csv.py index fac59c03..1ec5a01b 100644 --- a/bw2io/extractors/simapro_csv.py +++ b/bw2io/extractors/simapro_csv.py @@ -57,7 +57,7 @@ def to_number(obj): return float(obj.replace("%", "").strip()) / 100.0 try: # Eval for simple expressions like "1/2" - return float(eval(obj.replace(",", ".").strip())) + return float(eval(obj.replace(",", ".").replace("10^", "10E").strip())) except NameError: # Formula with a variable which isn't in scope - raises NameError return obj diff --git a/tests/simapro.py b/tests/simapro.py index 1917d70d..037be1fb 100644 --- a/tests/simapro.py +++ b/tests/simapro.py @@ -17,6 +17,7 @@ get_biosphere_2_3_name_migration_data, get_default_units_migration_data, ) +from bw2io.extractors.simapro_csv import to_number SP_FIXTURES_DIR = os.path.join(os.path.dirname(__file__), "fixtures", "simapro") @@ -122,6 +123,11 @@ def test_set_lognormal_loc_value_on_import(): assert np.abs(loc - np.log(amount)) < 1e-10 +@bw2test +def test_to_number(): + assert to_number("(38-15)*4185*30/0.9*10^-6") == 32.085 + + class SimaProCSVImporterTest(BW2DataTest): # def extra_setup(self): # # SimaPro importer always wants biosphere database