format_string
format_string allows you to construct a complex string (for use in titles or as file names) using multiple string and numeric inputs. An expression determines the content of the output.
The Expression is treated as Python f-string which allows for the use of the variables with Python expressions.
Module Input Ports
- Date [Number] Accepts a date
- Number 1 [Number] Accepts a number
- Number 2 [Number] Accepts a number
- Number 3 [Number] Accepts a number
- Number 4 [Number] Accepts a number
- String 1 [String] An input string
- String 2 [String] An input string
- String 3 [String] An input string
Module Output Ports
- Output String [String] The resultant string output
Note: Strings cannot be formatted or subsetted
NUMBER FORMATTING
The available floating point presentation types are:
- 'e' - Exponent notation. Prints the number in scientific notation using the letter 'e' to indicate the exponent.
- 'E' - Exponent notation. Same as 'e' except it converts the 'e+XX' to uppercase 'E+XX' .
- 'f' - Fixed point. Displays the number as a fixed-point number.
- 'g' - General format. For a given precision p >= 1, this rounds the number to p significant digits and then formats the result in either fixed-point format or in scientific notation, depending on its magnitude.
The precise rules are as follows: suppose that the result formatted with presentation type 'e' and precision p-1 would have exponent exp. Then if -4 <= exp < p, the number is formatted with presentation type 'f' and precision p-1-exp. Otherwise, the number is formatted with presentation type 'e' and precision p-1. In both cases insignificant trailing zeros are removed from the significant, and the decimal point is also removed if there are no remaining digits following it.
Positive and negative infinity, positive and negative zero, and nans, are formatted as inf, -inf, 0, -0 and nan respectively, regardless of the precision.
A precision of 0 is treated as equivalent to a precision of 1.
- The default precision is 6.
- 'G' - General format. Same as 'g' except switches to 'E' if the number gets to large.
- 'n' - Number. This is the same as 'g', except that it uses the current locale setting to insert the appropriate number separator characters.
- '%' - Percentage. Multiplies the number by 100 and displays in fixed ('f') format, followed by a percent sign.
- '' (None) - similar to 'g', except that it prints at least one digit after the decimal point.
The following are example formats and the resultant output:
- N1 = 3.141592654 | Expression set to {N1:.4f} | Result is 3.1416
- N1 = 12345.6789 | Expression set to {N1:.6e} | Result is 1.234568e+04
- N1 = 123456789.0123 | Expression set to {N1:.6G} | Result is 1.23457E+08
- N1 = 123456789.0123 | Expression set to {N1:.6g} | Result is 1.23457e+08
- N1 = 123456.0123 | Expression set to {N1:.6G} | Result is 123456
- N1 = 123456.0123 | Expression set to {N1:.9G} | Result is 123456.012
- N1 = 123456.0123 | Expression set to {N1:.5f} | Result is 123456.01230
- N1 = 0.893 | Expression set to {N1:.2%} | Result is 89.30%
- N1 = 3.141592654 | Expression set to {N1} | Result is 3.141592654
f-string examples:
-
N1 = 3.06 | S1 = "TOTHC Above 3.060 mg/kg"
-
Expression set to {S1.split()[0]} above {N1*1000:,.0f} ug/kg
-
Result is TOTHC above 3,060 ug/kg
-
REFERENCE: https://www.python.org/dev/peps/pep-3101/
F-STRING REFERENCE: https://www.python.org/dev/peps/pep-0498/
DATE FORMATTING
Syntax | Description | Example | Notes |
---|---|---|---|
%a | Weekday as locale’s abbreviated name. |
Sun, Mon, ..., Sat
(en_US);
So, Mo, ..., Sa
(de_DE)
|
(1) |
%A | Weekday as locale’s full name. |
Sunday, Monday, ...,
Saturday (en_US);
Sonntag, Montag, ...,
Samstag (de_DE)
|
(1) |
%w | Weekday as a decimal number, where 0 is Sunday and 6 is Saturday. | 0, 1, ..., 6 | - |
%d | Day of the month as a zero-padded decimal number. | 01, 02, ..., 31 | - |
%b | Month as locale’s abbreviated name. |
Jan, Feb, ..., Dec
(en_US);
Jan, Feb, ..., Dez
(de_DE)
|
(1) |
%B | Month as locale’s full name. |
January, February,
..., December (en_US);
Januar, Februar, ...,
Dezember (de_DE)
|
(1) |
%m | Month as a zero-padded decimal number. | 01, 02, ..., 12 | - |
%y | Year without century as a zero-padded decimal number. | 00, 01, ..., 99 | - |
%Y | Year with century as a decimal number. | 0001, 0002, ..., 2013, 2014, ..., 9998, 9999 | (2) |
%H | Hour (24-hour clock) as a zero-padded decimal number. | 00, 01, ..., 23 | - |
%I | Hour (12-hour clock) as a zero-padded decimal number. | 01, 02, ..., 12 | - |
%p | Locale’s equivalent of either AM or PM. |
AM, PM (en_US);
am, pm (de_DE)
|
(1), (3) |
%M | Minute as a zero-padded decimal number. | 00, 01, ..., 59 | - |
%S | Second as a zero-padded decimal number. | 00, 01, ..., 59 | (4) |
%f | Microsecond as a decimal number, zero-padded on the left. | 000000, 000001, ..., 999999 | (5) |
%z | UTC offset in the form +HHMM or -HHMM (empty string if the the object is naive). | (empty), +0000, -0400, +1030 | (6) |
%Z | Time zone name (empty string if the object is naive). | (empty), UTC, EST, CST | - |
%j | Day of the year as a zero-padded decimal number. | 001, 002, ..., 366 | - |
%U | Week number of the year (Sunday as the first day of the week) as a zero padded decimal number. All days in a new year preceding the first Sunday are considered to be in week 0. | 00, 01, ..., 53 | (7) |
%W | Week number of the year (Monday as the first day of the week) as a decimal number. All days in a new year preceding the first Monday are considered to be in week 0. | 00, 01, ..., 53 | (7) |
%c | Locale’s appropriate date and time representation. |
Tue Aug 16 21:30:00
1988 (en_US);
Di 16 Aug 21:30:00
1988 (de_DE)
|
(1) |
%x | Locale’s appropriate date representation. |
08/16/88 (None);
08/16/1988 (en_US);
16.08.1988 (de_DE)
|
(1) |
%X | Locale’s appropriate time representation. |
21:30:00 (en_US);
21:30:00 (de_DE)
|
(1) |
%% | A literal '%' character. | % | - |
Notes:
-
Because the format depends on the current locale, care should be taken when making assumptions about the output value. Field orderings will vary (for example, “month/day/year” versus “day/month/year”), and the output may contain Unicode characters encoded using the locale’s default encoding (for example, if the current locale is ja_JP, the default encoding could be any one of eucJP, SJIS, or utf-8; use locale.getlocale() to determine the current locale’s encoding).
-
The strptime() method can parse years in the full [1, 9999] range, but years < 1000 must be zero-filled to 4-digit width.
Changed in version 3.2: In previous versions, strftime() method was restricted to years >= 1900.
Changed in version 3.3: In version 3.2, strftime() method was restricted to years >= 1000.
-
When used with the strptime() method, the %p directive only affects the output hour field if the %I directive is used to parse the hour.
-
Unlike the time module, the datetime module does not support leap seconds.
-
When used with the strptime() method, the %f directive accepts from one to six digits and zero pads on the right. %f is an extension to the set of format characters in the C standard (but implemented separately in datetime objects, and therefore always available).
-
For a naive object, the %z and %Z format codes are replaced by empty strings.
For an aware object:
- %z
-
utcoffset() is transformed into a 5-character string of the form +HHMM or -HHMM, where HH is a 2-digit string giving the number of UTC offset hours, and MM is a 2-digit string giving the number of UTC offset minutes. For example, if utcoffset() returns timedelta(hours=-3, minutes=-30), %z is replaced with the string '-0330'.
- %Z
-
If tzname() returns None, %Z is replaced by an empty string. Otherwise %Z is replaced by the returned value, which must be a string.
Changed in version 3.2: When the %z directive is provided to the strptime() method, an aware datetime object will be produced. The tzinfo of the result will be set to a timezone instance.
-
When used with the strptime() method, %U and %W are only used in calculations when the day of the week and the year are specified.
Copyright © 2001-2014 Python Software Foundation; All Rights Reserved