Python
基本資料型別
字符串
f-字串

Python f-string:小數點, 字符串格式, 格式化

F-string,代表Formatted string,是Python中操作字符串和处理格式化团队的最直观方式,是3.6中引入的新特性。

在这篇文章中,我们将介绍使用F-strings的基础知识,以及诸如格式化小数点、换行、for语句和错误处理等主题。

1. 如何在Python中使用F-字符串

下面是F-字符串如何改变Python的。

当给定以下两个变量时、

name = "Jonn Doe"
age = 30

如果你想得到以下输出

My name is John Doe. I'm 30 years old this year.

使用Python的默认字符串方法,我可以使用三种不同的方法,如下所示。

str1 = "My name is " + name + ". I'm " + str(age) + " years old this year."
 
str2 = "My name is %s. I'm %d years old this year." % (name, age)
 
str3 = "My name is {}. I'm {} years old this year.".format(name, age)
 
# Output:
# My name is Jonn Doe. I'm 30 years old this year.

F-strings允许你写出最易读的代码,比如这样

f_str1 = f"My name is {name}. I'm {age} years old this year."
 
# Output:
# My name is Jonn Doe. I'm 30 years old this year.

正如你在例子中看到的,f在定义字符串字面的引号之前,而你要插入的变量的值被括在大括号{}中。 在大括号内,你还可以插入一个表达式,如下图所示,或者一个容器类型,如列表。

friends = ["Mark", "Elon"]
 
f_str2 = f"My name is {name}. I'm {age + 1 } years old next year. My friends are {friends}."
 
# Output:
# My name is Jonn Doe. I'm 31 years old next year. My friends are ['Mark', 'Elon'].

这种在字符串之间插入变量进行输出的能力被称为字符串插值、 并且被大多数现代编程语言所支持。

F-strings 是 Python 支持字符串插值的方式。

现在我们已经介绍了使用F-strings的基础知识,让我们继续讨论最常问的问题。

2. 精确浮点

F-字符串有一个简单的符号,叫做格式指定符,它允许你以你喜欢的方式格式化输出字符串。 这对于表示数字特别有用。 在本节中,我们将研究十进制表示法,这是表示数字的几种方法之一。

F-字符串让你有能力将少量不同长度的数字统一起来,然后很好地输出它们。

这很容易使用。 如果你在大括号中的变量后面加上:.2f,你就会直接输出你输入的数字。 在我们的例子中,我们输入了2,所以我们将打印到小数点后两位数。

float1 = 11.38471
float2 = 8.1
 
print(f'float1: {float1:.2f}, float2: {float2:.2f}')
 
# Output:
# float1: 11.38, float2: 8.10

结果、 我们在float1的末尾添加了0,因为它有两个以上的小数位,float2因为它在第一个位置结束。

如果它是一个非常小的质数,也可以用浮点字符e进行格式化。 通过添加:e,Python告诉你小数点右边有多少位。你也可以指定数字的数量。 让我们通过一个例子来检查一下。

too_small_num = 0.00000000123
 
print(f'too_small_num: {too_small_num:e}, too_samll_num_3: {too_small_num:.3e}')
 
# Output:
# too_small_num: 1.230000e-09, too_samll_num_3: 1.230e-09

最后,你也可以将百分比(%)输出为小数,同样,你可以设置小数点的位数。

score = 0.95
 
print(f'score(%): {score:.0%}, {score:.2%}, {score:.4%}')
 
# Output:
# score(%): 95%, 95.00%, 95.0000%

3. Python f-string digits

我们已经在第2节中学习了很多关于设置小数位的知识。 同样的原则也可以应用于整数。

如果小数是.0f,浮点数是.0e,百分比是.0%,那么整数就是,d。 逗号,不是下划线。 对输出超过1,000的大数字的可读性很有用。

big_num = 10000020003
 
print(f'big_num_with_comma: {big_num:,d}')
 
# Output:
# big_num_with_comma: 10,000,020,003

你也可以用^添加空格,并输出二进制、八进制和十六进制数字。 在代码中查看一下。

number = 25
point = 2.543
 
print(f"Binary: {number:b}")
print(f"Integer: {number:d}")
print(f"octal:{number:o}")
print(f"Hexadecimal: {number:x}")
print(f"Floating point: {point:.2e}")
print(f"Decimal: {point:.2f}")
print(f"Decimal or floating point automatically: {point:.2g}")
print(f"Percent: {point:.2%}")
 
# Output:
# Binary: 11001
# Integer: 25
# octal: 31
# Hexadecimal: 19
# Floating point: 2.54e+00
# Decimal: 2.54
# Decimal or floating point automatically: 2.5
# Percent: 254.30

4. 新行

Python支持多行字符串('''),它们可以被直观地包装起来。 要以其他方式使用包装,必须使用符号\n,其中n表示换行

multiline1 = '''multiline
string'''
 
multiline2 = f'multiline\nstring'
 
# Output:
# multiline
# string

事实上,使用'''的多行字符串只是一种方便的语法,可以自动插入\n

5. 带for循环的F-字符串

F-字符串也可以与for语句一起使用,以写出更可读的代码。 下面的代码将一个列表中的朋友的名字一个一个地打印出来。

friends = ["Mark", "Elon"]
 
for friend in friends:
    print(f"My friend {friend}")
 
# Output:
# My friend Mark
# My friend Elon

6. 排除Python f-string错误的故障

这里有一些你在使用f-字符串时可能遇到的常见错误。 我们总结了每个错误的原因和解决办法。

  • SyntaxError: Invalid syntax:. 当你不遵循f-string语法时发生。 确保你用f作为字符串字面的前缀,并且用大括号{}正确地包围变量或表达式。

  • NameError: Name '...' is not defined:. 如果你使用了一个未声明的变量,就会出现这个错误。 请确保你已经声明了你在字符串之间插入的变量。

  • TypeError: '...' object is not callable: 当你在F-string语法中插入一个变量或表达式时,没有明确输入大括号{},就会发生这个错误。 请检查你是否使用了正确的格式。 相反,先计算结果,然后将其嵌入到F-string中。

  • SyntaxError: f-string expression part cannot contain a backslash:. 在所有的Python字符串中,除了原始字符串,反斜线\有特殊的含义。 这是因为它是用来表示换行、制表等的符号,如\n \t。 所以在变量或表达式中直接使用反斜杠会导致错误。

如果你必须使用反斜杠,请将其与另一个反斜杠一起使用,并转义为返回正常的字符串。

print(f'\\')
 
# Output:
# \
  • ValueError: Single '}' encountered in format string: 当你输入一个额外的大括号时就会发生这个错误,比如print(f'{{name}')。 修正任何错别字,如果你想使用大括号,请转义,如{{}}
print(f'{{{name}}}')
 
# Output:
# {John Doe}

7. 总结

到目前为止,我们已经谈到了与Python中的F-strings有关的几个主题。 无论你在哪个领域进行开发,F-字符串都可能是你每天都会遇到的功能之一。 我希望这能帮助你熟悉它们,并在适当的时候使用它们。

copyright for Python F-string

© 2023 All rights reserved.