Возможен одиночный '}' в строке формата - PullRequest
0 голосов
/ 13 ноября 2018

возможно ли объединить строку при использовании .format()?

_NACHKOMMASTELLEN = 3

print("  {0:." + str(_NACHKOMMASTELLEN) + "f}".format(round(V_values[0], _NACHKOMMASTELLEN)), end='')

Я получаю ошибку:

В строке формата встречается одиночный '}'

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Если вы ниже 3,6, вы можете дважды отформатировать:

_NKS = 3   # shortened for 79 line char limit
V_values = [3.123456789]
print("  {{:.{}f}}".format(_NKS ).format(round(V_values[0], _NKS )))

Первый format помещает 3 вместо {} и преобразует двойные {{ и }} вsingle { и } - результирующая строка {:.3f} затем используется для второй format.

Как указал @ user2357112 в комментарии, формат лучше, чем я.Это также работает:

print("  {:.{}f}".format(round(V_values[0], _NKS ),_NKS ))

Вывод:

  3.123

Вам не нужно, если вы уже используете 3.6 - f-струны справляются с этим лучше:

_NACHKOMMASTELLEN = 3
V_values = [3.123456789]
print(f"  {round(V_values[0], _NACHKOMMASTELLEN):.{_NACHKOMMASTELLEN}f}")
V_values = [3.1]
print(f"  {round(V_values[0], _NACHKOMMASTELLEN):.{_NACHKOMMASTELLEN}f}")

Вывод:

  3.123
  3.100
0 голосов
/ 13 ноября 2018

Вам нужно заключить строку в скобки:

print(("  {0:." + str(_NACHKOMMASTELLEN) + "f}").format(round(V_values[0], _NACHKOMMASTELLEN)), end='')
      ^                                        ^

Так что " {0:." + str(_NACHKOMMASTELLEN) + "f}" будет форматироваться вместо "f}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...