带有元组的Python 3.6中的格式化字符串文字

时间:2016-08-04 09:44:03

标签: python python-3.x tuples string-formatting python-3.6

使用str.format()我可以使用元组来访问参数:

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
  

' a,b,c'

>>> t = ('a', 'b', 'c')
>>> '{0}, {1}, {2}'.format(*t)
  

' a,b,c'

但是新的格式化字符串文字以' f'为前缀。如何使用元组?

1 个答案:

答案 0 :(得分:1)

您的第一个str.format()调用是一个带有3个参数的常规方法调用,没有涉及元组。您的第二个电话使用* splat调用语法; str.format()调用收到3个单独的个别参数,并不关心那些来自元组。

使用f格式化字符串不要使用方法调用,因此您无法使用任何一种技术。 f'..'格式化字符串中的每个插槽都是作为常规Python表达式执行的。

您必须直接从元组中提取您的值:

f'{t[0]}, {t[1]}, {t[2]}'

或首先将您的元组扩展为新的局部变量:

a, b, c = t
f'{a}, {b}, {c}'

或继续使用str.format()。您没有 使用f'..'格式化字符串,这是该语言的新增功能,而不是{{1 }}

来自PEP 498 -- Literal String Interpolation

  

本PEP不建议删除或弃用任何现有的字符串格式化机制。