Source code for ase2sprkkr.common.formats

"""Formating routines"""

import re


[docs] def format_for_string(format): """ Return a format string derived from given format, that suits for string. >>> format_for_string(">14") '>14' >>> format_for_string(">14e") '>14' >>> format_for_string(">14e") '>14' """ return re.sub("[eEfFgG]$", "", format)
[docs] def full_format_for_string(format): """ Return a format string derived from the given format, that suits for string. >>> full_format_for_string("Cokoli {>14} tu") 'Cokoli {>14} tu' >>> full_format_for_string("Remove{>14e}here") 'Remove{>14}here' >>> full_format_for_string("{>14g}") '{>14}' """ return re.sub("[eEfFgG]}(?!})", "}", format)
[docs] def fortran_format(value, format=":.12e"): """ Format the value with a leading zero. Format the given float number using the given fortran scientific notation format string, but with a leading zero >>> fortran_format(0.1) '0.1000000000000e-00' >>> fortran_format(1, ":> 14.6E") ' 0.1000000E+01' Parameters ---------- value: mixed A value to be printed. The value have to be convertable to a float format: str Fortran format string with a type 'e' or 'E'. Optional Return ------ output: str A string containing the number in scientific notation with a leading zero. """ la = ("{" + format + "}").format(float(value)) a = la.lstrip() leading = la[: len(la) - len(a)] la = a a = la.rstrip() trailing = la[len(a) :] if "E" in format: e = a.find("E") elif "e" in format: e = a.find("e") else: raise ("No E in fortran format string: " + format) return leading + "0.{}{}{}{:02d}".format(a[0], a[2:e], a[e : e + 2], abs(int(a[e + 1 :]) * 1 + 1)) + trailing