Source code for chemistry_tools.property_format

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#  !/usr/bin/env python
#   -*- coding: utf-8 -*-
#
#  property_format.py
"""Format Physical Properties for Chemicals"""

#
#  Copyright (c) 2019 Dominic Davis-Foster <dominic@davis-foster.co.uk>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#
#

import re
from decimal import Decimal


def degC(string):
	return string.replace(" deg C", "°C").replace("deg C", "°C").replace(" DEG C", "°C").replace("DEG C", "°C")


def equals(string):
	return string.replace("= ", " = ").replace("  = ", " = ")


[docs]def scientific(string): """ TODO: Finish :param string: :return: """ import re try: magnitude = re.findall("X10.[0-9]+", string)[0].replace("X10", '').replace("-", "−") except IndexError: # no scientific notation to format return string # print(magnitude) return re.sub("X10.[0-9]+", f"×10<sup>{magnitude}</sup>", string)
def uscg1999(string): return string.replace("(USCG, 1999)", '') def trailspace(string): return string.rstrip(" ") def f2c(string): try: temperature = re.findall(r"\d*\.?\d+ *° *F", string)[0].replace("F", '').replace("°", '').replace(" ", '') except IndexError: return string # Convert to Censius and strip trailing 0s and decimal points temperature = str((Decimal(temperature) - 32) * (Decimal(5) / Decimal(9))) if "." in temperature: temperature = temperature.rstrip("0").rstrip(".") return re.sub(r"\d*\.?\d+ *° *F", f"{temperature}°C", string) def property_format(string): return trailspace(f2c(uscg1999(scientific(degC(equals(string))))))