DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on

format_map in Python (5)

Buy Me a Coffee

*Memo:

:[f][a][s][z][#][0][w][g][.p][t] can format a string with format_map() as shown below:

<Format a string with Decimal() by 'f' or 'F'>:

from decimal import Decimal

v = {'k':Decimal(value='1234.5555555555')}
                           # |   10   |
print(v['k'])
# 1234.5555555555
#      |   10   |

print('"{k:.20f}"'.format_map(v))
print('"{k:.20F}"'.format_map(v))
# "1234.55555555550000000000"
#       |        20        |

print('"{k:.15f}"'.format_map(v))
print('"{k:.15F}"'.format_map(v))
# "1234.555555555500000"
#       |     15      |

print('"{k:.10f}"'.format_map(v))
print('"{k:.10F}"'.format_map(v))
print('"{k:f}"'.format_map(v))
print('"{k:F}"'.format_map(v))
# "1234.5555555555"
#       |   10   |

print('"{k:.6f}"'.format_map(v))
print('"{k:.6F}"'.format_map(v))
# "1234.555556"
#       | 6  |

print('"{k:.2f}"'.format_map(v))
print('"{k:.2F}"'.format_map(v))
# "1234.56"

print('"{k:.1f}"'.format_map(v))
print('"{k:.1F}"'.format_map(v))
# "1234.6"

print('"{k:.0f}"'.format_map(v))
print('"{k:.0F}"'.format_map(v))
# "1235"

print('"{k:#.0f}"'.format_map(v))
print('"{k:#.0F}"'.format_map(v))
# "1235."

print('"{k:,.20f}"'.format_map(v))
print('"{k:,.20F}"'.format_map(v))
# "1,234.55555555550000000000"
#        |        20        |

print('"{k:,f}"'.format_map(v))
print('"{k:,F}"'.format_map(v))
# "1,234.5555555555"
#        |   10   |

print('"{k:_.20f}"'.format_map(v))
print('"{k:_.20F}"'.format_map(v))
print('"{k:_f}"'.format_map(v))
print('"{k:_F}"'.format_map(v))
# ValueError: invalid format string
Enter fullscreen mode Exit fullscreen mode
from decimal import Decimal

print('"{k1:f} {k2:f}"'.format_map({'k1':Decimal(value='nan'),
                                    'k2':Decimal(value='inf')}))
print('"{k1:F} {k2:F}"'.format_map({'k1':Decimal(value='nan'),
                                    'k2':Decimal(value='inf')}))
# "NaN Infinity"
Enter fullscreen mode Exit fullscreen mode

*Decimal() without str gets an improper value.

from decimal import Decimal

v = {'k':Decimal(value=1234.5555555555)}
                          # |   10   |
print(v['k'])
# 1234.555555555499950060038827359676361083984375
#      |                  42                    |

print('"{k:.20f}"'.format_map(v))
print('"{k:.20F}"'.format_map(v))
# "1234.55555555549995006004"
#       |        20        |

print('"{k:.15f}"'.format_map(v))
print('"{k:.15F}"'.format_map(v))
# "1234.555555555499950"
#       |     15      |

print('"{k:.10f}"'.format_map(v))
print('"{k:.10F}"'.format_map(v))
# "1234.5555555555"
#       |   10   |

print('"{k:.6f}"'.format_map(v))
print('"{k:.6F}"'.format_map(v))
# "1234.555556"
#       | 6  |

print('"{k:.2f}"'.format_map(v))
print('"{k:.2F}"'.format_map(v))
# "1234.56"

print('"{k:.1f}"'.format_map(v))
print('"{k:.1F}"'.format_map(v))
# "1234.6"

print('"{k:.0f}"'.format_map(v))
print('"{k:.0F}"'.format_map(v))
# "1235"

print('"{k:#.0f}"'.format_map(v))
print('"{k:#.0F}"'.format_map(v))
# "1235."

print('"{k:f}"'.format_map(v))
print('"{k:F}"'.format_map(v))
# "1234.555555555499950060038827359676361083984375"
#       |                  42                    |

print('"{k:,.20f}"'.format_map(v))
print('"{k:,.20F}"'.format_map(v))
# "1,234.55555555549995006004"
#        |        20        |

print('"{k:,f}"'.format_map(v))
print('"{k:,F}"'.format_map(v))
# "1,234.555555555499950060038827359676361083984375"
#       |                   42                    |

print('"{k:_.20f}"'.format_map(v))
print('"{k:_.20F}"'.format_map(v))
print('"{k:_f}"'.format_map(v))
print('"{k:_F}"'.format_map(v))
# ValueError: invalid format string
Enter fullscreen mode Exit fullscreen mode
from decimal import Decimal

print('"{k1:f} {k2:f}"'.format_map({'k1':Decimal(value=float('nan')),
                                    'k2':Decimal(value=float('inf'))}))
print('"{k1:F} {k2:F}"'.format_map({'k1':Decimal(value=float('nan')),
                                    'k2':Decimal(value=float('inf'))}))
# "NaN Infinity"
Enter fullscreen mode Exit fullscreen mode

Top comments (0)