Python - 使用变量作为字符串格式化的一部分

时间:2017-12-21 16:00:31

标签: python string-formatting

我搜索了一个答案,但因为它有点具体无法找到答案。专家的一个简单问题(我希望)。

我希望能够使用int变量而不是下面代码中使用的数字(5)。我希望有一种方法,否则我必须把我的代码放在 if 块中,如果可能的话我试图避免(我不希望它在我的循环中每次都经历一个条件)

my_array[1, 0] = '{0:.5f}'.format(a)

有没有办法让我使用如下变量编写下面的代码:

x = 5
my_array[1, 0] = '{0:.xf}'.format(a)

任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:15)

当然有:

x = 5
a = '{1:.{0}f}'.format(x, 1.12345111)
print(a)  # -> 1.12345

如果您不想指定位置(0& 1),则只需反转您的输入:

a = '{:.{}f}'.format(1.12345111, x)
#                    ^ the float that is to be formatted goes first

这是因为第一个参数format() 字符串的第一个(最外面的)括号

因此,以下失败

a = '{:.{}f}'.format(x, 1.12345111) 

因为{:1.12345111f}无效。

您可能会感兴趣的格式化的其他示例:

a = '{:.{}{}}'.format(1.12345111, x, 'f')  # -> 1.12345

a = '{:.{}{}}'.format(1.12345111, x, '%')  # -> 112.34511%

a = '{:.{}}'.format(1.12345111, '{}{}'.format(x, 'f'))  # -> 112.34511%

最后,正如@m_____z在他的答案中指出的那样,如果您使用的是Python3.6或更高版本,您可以使用f-strings轻松完成所有这些操作。

number = 1.12345111
x = 5
a = f'{number:.{x}f}'
print(a)  # -> 1.12345

注意引号前的f

答案 1 :(得分:7)

假设您使用的是Python 3.6,您只需执行以下操作:

x = 5
my_array[1, 0] = f'{a:.{x}f}'

答案 2 :(得分:3)

这可以通过两种方式实现。通过使用str.format()或使用%

a是您要打印的数字,x是我们可以执行的小数位数:

str.format:

'{:.{dec_places}f}'.format(a, dec_places=x)

%:

'%.*f' % (x, a)

答案 3 :(得分:0)

x=5
f='{0:.'+str(x)+'f}'
my_array[1, 0] = f.format(a)