{% raw %}

Python f 字符串教程

原文: http://zetcode.com/python/fstring/

Python f 字符串教程显示了如何使用 f 字符串在 Python 中格式化字符串。

Python f 字符串

Python f 字符串是执行字符串格式化的最新 Python 语法。 自 Python 3.6 起可用。 Python f 字符串提供了一种更快,更易读,更简明且不易出错的在 Python 中格式化字符串的方式。

f 字符串的前缀为f,并使用{}括号求值值。

在冒号后指定用于类型,填充或对齐的格式说明符; 例如:f'{price:.3}',其中price是变量名。

Python 字符串格式

以下示例总结了 Python 中的字符串格式设置选项。

formatting_strings.py

  1. #!/usr/bin/env python3
  2. name = 'Peter'
  3. age = 23
  4. print('%s is %d years old' % (name, age))
  5. print('{} is {} years old'.format(name, age))
  6. print(f'{name} is {age} years old')

该示例使用两个变量设置字符串格式。

  1. print('%s is %d years old' % (name, age))

这是最旧的选项。 它使用%运算符和经典字符串格式指定,例如%s%d

  1. print('{} is {} years old'.format(name, age))

从 Python 3.0 开始,format()函数被引入以提供高级格式化选项。

  1. print(f'{name} is {age} years old')

从 Python 3.6 开始,Python f 字符串可用。 该字符串具有f前缀,并使用{}求值变量。

  1. $ python formatting_string.py
  2. Peter is 23 years old
  3. Peter is 23 years old
  4. Peter is 23 years old

我们有相同的输出。

Python f 字符串表达式

我们可以将表达式放在{}括号之间。

expressions.py

  1. #!/usr/bin/env python3
  2. bags = 3
  3. apples_in_bag = 12
  4. print(f'There are total of {bags * apples_in_bag} apples')

该示例对 f 字符串中的表达式求值。

  1. $ python expressions.py
  2. There are total of 36 apples

这是输出。

Python f 字符串字典

我们可以使用 f 字符串中的字典。

dicts.py

  1. #!/usr/bin/env python3
  2. user = {'name': 'John Doe', 'occupation': 'gardener'}
  3. print(f"{user['name']} is a {user['occupation']}")

该示例以 f 字符串形式求值字典。

  1. $ python dicts.py
  2. John Doe is a gardener

这是输出。

Python 多行 f 字符串

我们可以使用多行字符串。

multiline.py

  1. #!/usr/bin/env python3
  2. name = 'John Doe'
  3. age = 32
  4. occupation = 'gardener'
  5. msg = (
  6. f'Name: {name}\n'
  7. f'Age: {age}\n'
  8. f'Occupation: {occupation}'
  9. )
  10. print(msg)

该示例显示了多行 f 字符串。 F 字符串放在方括号之间; 每个字符串前面都带有f字符。

  1. $ python multiline.py
  2. Name: John Doe
  3. Age: 32
  4. Occupation: gardener

这是输出。

Python f 字符串调用函数

我们还可以在 f 字符串中调用函数。

call_function.py

  1. #!/usr/bin/env python3
  2. def mymax(x, y):
  3. return x if x > y else y
  4. a = 3
  5. b = 4
  6. print(f'Max of {a} and {b} is {mymax(a, b)}')

该示例在 f 字符串中调用自定义函数。

  1. $ python call_fun.py
  2. Max of 3 and 4 is 4

这是输出。

Python f 字符串对象

Python f 字符串也接受对象。 对象必须定义了__str__()__repr__()魔术函数。

objects.py

  1. #!/usr/bin/env python3
  2. class User:
  3. def __init__(self, name, occupation):
  4. self.name = name
  5. self.occupation = occupation
  6. def __repr__(self):
  7. return f"{self.name} is a {self.occupation}"
  8. u = User('John Doe', 'gardener')
  9. print(f'{u}')

该示例求值 f 字符串中的对象。

  1. $ python objects.py
  2. John Doe is a gardener

这是输出。

Python F 字符串转义字符

下面的示例显示如何对 f 字符串中的某些字符进行转义。

escaping.py

  1. #!/usr/bin/env python3
  2. print(f'Python uses {{}} to evaludate variables in f-strings')
  3. print(f'This was a \'great\' film')

为了避免花括号,我们将字符加倍。 单引号以反斜杠字符转义。

  1. $ python escaping.py
  2. Python uses {} to evaludate variables in f-strings
  3. This was a 'great' film

这是输出。

Python f 字符串格式化日期时间

以下示例格式化日期时间。

format_datetime.py

  1. #!/usr/bin/env python3
  2. import datetime
  3. now = datetime.datetime.now()
  4. print(f'{now:%Y-%m-%d %H:%M}')

该示例显示格式化的当前日期时间。 日期时间格式说明符位于:字符之后。

  1. $ python format_datetime.py
  2. 2019-05-11 22:39

这是输出。

Python f 字符串格式化浮点数

浮点值的后缀为f。 我们还可以指定精度:小数位数。 精度是一个点字符后的值。

format_floats.py

  1. #!/usr/bin/env python3
  2. val = 12.3
  3. print(f'{val:.2f}')
  4. print(f'{val:.5f}')

该示例打印格式化的浮点值。

  1. $ python format_floats.py
  2. 12.30
  3. 12.30000

输出显示具有两位和五个小数位的数字。

Python f 字符串格式化宽度

宽度说明符设置值的宽度。 如果该值短于指定的宽度,则该值可以用空格或其他字符填充。

format_width.py

  1. #!/usr/bin/env python3
  2. for x in range(1, 11):
  3. print(f'{x:02} {x*x:3} {x*x*x:4}')

该示例打印三列。 每个列都有一个预定义的宽度。 第一列使用 0 填充较短的值。

  1. $ python format_width.py
  2. 01 1 1
  3. 02 4 8
  4. 03 9 27
  5. 04 16 64
  6. 05 25 125
  7. 06 36 216
  8. 07 49 343
  9. 08 64 512
  10. 09 81 729
  11. 10 100 1000

这是输出。

Python f 字符串对齐字符串

默认情况下,字符串在左边对齐。 我们可以使用>字符来对齐右侧的字符串。 >字符在冒号后面。

justify.py

  1. #!/usr/bin/env python3
  2. s1 = 'a'
  3. s2 = 'ab'
  4. s3 = 'abc'
  5. s4 = 'abcd'
  6. print(f'{s1:>10}')
  7. print(f'{s2:>10}')
  8. print(f'{s3:>10}')
  9. print(f'{s4:>10}')

我们有四个不同长度的弦。 我们将输出的宽度设置为十个字符。 值在右对齐。

  1. $ python justify.py
  2. a
  3. ab
  4. abc
  5. abcd

这是输出。

Python f 字符串数字符号

数字可以具有各种数字符号,例如十进制或十六进制。

format_notations.py

  1. #!/usr/bin/env python3
  2. a = 300
  3. # hexadecimal
  4. print(f"{a:x}")
  5. # octal
  6. print(f"{a:o}")
  7. # scientific
  8. print(f"{a:e}")

该示例以三种不同的表示法打印值。

  1. $ python format_notations.py
  2. 12c
  3. 454
  4. 3.000000e+02

这是输出。

在本教程中,我们使用了 Python f 字符串。

您可能也对以下相关教程感兴趣: Python 字符串Python Jinja 教程Python 教程,或列出所有 Python 教程

{% endraw %}