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-字符串都可能是你每天都会遇到的功能之一。 我希望这能帮助你熟悉它们,并在适当的时候使用它们。
