Python中字符串格式化的方法详解

 更新时间:2023年10月19日 10:53:09   作者:孙北海  
众所周知,我们可以使用 print() 方法来输出一个固定内容的字符串,就像是 print("Hello, world!") 一样,但是,在现实中,我们很多时候是需要输出一些内容不断变化,或者内容动态生成的字符串,本文将介绍如何按照需要,在Python中格式化一个字符串

引子

众所周知,我们可以使用 print() 方法来输出一个固定内容的字符串,就像是 print("Hello, world!") 一样。但是,在现实中,我们很多时候是需要输出一些内容不断变化,或者内容动态生成的字符串,例如,我们不再输出 "Hello, world!",而是输出 "Hello, Mike!" 或者 "Hello, Tom!"。

这个时候我们该怎么做呢?

本文将介绍如何按照需要,在Python中格式化一个字符串。

“string.format()”方法

在Python中,有几种格式化字符串的方法,包括 % 格式化方法、str.format() 方法和最近在Python 3.6中引入的 f-strings 方法(也称为格式化字符串字面量)。每种方法都有其自己的优点和缺点,但它们都可以用于格式化字符串。

在Python 3.6版本之前,我们推荐使用 str.format() 方法格式化字符串。该方法通过将字符串中的占位符替换为值来格式化字符串。该方法具有多个可选参数,允许开发人员自定义输出的格式。

str.format() 方法的基本语法为:

string.format(value1, value2, ...)

其中,string 是我们要格式化的字符串,value1value2 等是要替换到字符串中的占位符的值。

字符串中的占位符由成对的大括号 {} 表示。在大括号内部,我们可以使用格式说明符来控制被替换的值的格式。

以下是一些常用的格式说明符:

  • {}

    这是最简单的格式说明符,它只是原样替换值。

  • {:<N}

    这个说明符将值左对齐,并在右侧填充空格,以达到总宽度N。

  • {:>N}

    这个说明符将值右对齐,并在左侧填充空格,以达到总宽度N。

  • {:^N}

    这个说明符将值居中,并在两侧填充空格,以达到总宽度N。

  • {:.Nf}

    这个说明符将浮点数格式化为N位小数。

  • {:.Ng}

    这个说明符将数字格式化为N位有效数字。

  • {:.N%}

    这个说明符将浮点数格式化为带有N位小数的百分比。

除了这些格式说明符外,str.format()方法还支持许多其他参数:

  • sep

    指定在连接多个值时要使用的分隔符字符。

  • end

    指定要附加到输出结尾的字符串。

  • file

    指定要将输出写入的文件对象。

  • flush

    指定在写入输出后是否刷新输出缓冲区。

下面,我们来看几个使用 str.format() 方法格式化字符串的例子:

>>> name = "Alice"
>>> age = 30
>>> print("My name is {} and I am {} years old.".format(name, age))
My name is Alice and I am 30 years old.

你也可以通过给参数命名来替换占位符,例如:

>>> print("My name is {name} and I am {age} years old.".format(name=name, age=age))
My name is Alice and I am 30 years old.

你还可以重复使用相同的参数,例如:

>>> print("My name is {name} and I am {age} years old. I repeated my name {name}".format(name=name, age=age))
My name is Alice and I am 30 years old. I repeated my name Alice

我们还是可以尝试使用更复杂一点的参数,例如:

>>> x = 12345.6789
>>> y = 98765.4321
>>> message = "x = {:.2f}, y = {:.2f}".format(x, y)
>>> print(message)
x = 12345.68, y = 98765.43

在这个示例中,我们使用 str.format() 方法来格式化两个浮点数 x 和 y。我们使用 :.2f 格式说明符,将数字格式化为两位小数。

一般来说,在Python 3.6版本之前,我们都推荐使用 string.format() 方法来格式化字符串。

“f-string”语法

在Python 3.6及更高版本中,Python提供了一种称为 f-string (也叫 f-strings 或 f-interpolation) 的新语法,可以更简单地格式化字符串。

f-string 的语法是通过在字符串前面加上一个前缀 f 或 F,然后在字符串中插入表达式的方式来格式化字符串。表达式需要用大括号 {} 括起来。

例如,你可以使用以下代码格式化字符串:

>>> name = "Alice"
>>> age = 30
>>> print(f"My name is {name} and I am {age} years old.")
My name is Alice and I am 30 years old.

你还可以在表达式中调用函数或运算符,例如:

>>> import math
>>> print(f"2*2={2*2}, pi={math.pi}")
2*2=4, pi=3.141592653589793

也可以通过在表达式的后面添加一个冒号和格式说明符来格式化输出,例如,你可以使用以下语法来保留小数点后两位:

>>> print(f"The value of pi is approximately {math.pi:.2f}.")
The value of pi is approximately 3.14.

你还可以使用冒号和格式说明符来指定字符串的对齐方式、宽度和其他格式选项。

例如,你可以使用以下语法来左对齐一个字符串,并在右侧填充空格以达到指定宽度:

>>> name = 'Alice'
>>> print(f"{name:<10}")
Alice    

与 str.format() 方法类似,f-string 方法也可以使用若干格式说明符来指定格式:

  • :d 或 :i 转换为有符号十进制整数;
  • :o 转换为无符号八进制整数;
  • :x:X 转换为无符号十六进制整数,x 表示小写,X 表示大写;
  • :e:E 转换为科学计数法,e 表示小写,E 表示大写;
  • :f:F 转换为十进制浮点数,f 表示小写,F 表示大写;
  • :g:G 转换为十进制浮点数,尽量使用科学计数法,g表示小写,G 表示大写;
  • :% 转换为百分数;
  • :c 转换为字符;
  • :s 转换为字符串;

如果你需要在字符串中插入大括号,可以使用双大括号 {{}},这样Python就会将它们当作普通字符而不是占位符:

>>> print(f"{{name}} is a placeholder")
{name} is a placeholder

你还可以使用 f-string 格式化字典对象:

>>> person = {'name': 'Alice', 'age': 30}
>>> print(f"My name is {person['name']} and I am {person['age']} years old.")
My name is Alice and I am 30 years old.

目前,f-string 是Python中最简单,最快,也是最常用的字符串格式化方式,我们推荐开发人员在Python 3.6及以上版本中使用。

总结

在Python开发中,格式化字符串是一种重要的技术,可以用于动态创建包含变量、表达式和其他数据的字符串。它允许开发人员通过将字符串的某些部分替换为变量、表达式或其他字符串的值来构造复杂的字符串。

在Python中,目前有三种主要的格式化字符串方法,包括 % 格式化方法、str.format() 方法和 f-strings 方法。我们推荐开发人员在Python 3.6及以上版本中使用 f-string 方法来格式化字符串。

以上就是Python中字符串格式化的方法详解的详细内容,更多关于Python字符串格式化的资料请关注脚本之家其它相关文章!

相关文章

  • python中停止线程的方法代码举例

    python中停止线程的方法代码举例

    在Python中停止线程有多种方法,包括使用全局变量、使用标志位、使用异常等,下面这篇文章主要给大家介绍了关于python中停止线程方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • pytorch 一行代码查看网络参数总量的实现

    pytorch 一行代码查看网络参数总量的实现

    这篇文章主要介绍了pytorch实现一行代码查看网络参数总量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • python imutils包基本概念及使用

    python imutils包基本概念及使用

    python imutils包可以很简洁的调用opencv接口,轻松实现图像的平移,旋转,缩放,骨架化等操作,对python imutils包基本概念及使用方法感兴趣的朋友一起看看吧
    2021-07-07
  • 一文详解如何使用Python从字符串中提取数字

    一文详解如何使用Python从字符串中提取数字

    这篇文章主要给大家介绍了关于如何使用Python从字符串中提取数字的相关资料,我们在进行数据处理时候,可能想要提取字符串中的数字进行分析,需要的朋友可以参考下
    2023-11-11
  • 浅谈Python中copy()方法的使用

    浅谈Python中copy()方法的使用

    这篇文章主要介绍了浅谈Python中copy()方法的使用,Python中的拷贝分为潜拷贝和深拷贝,本文只是简单介绍用法,需要的朋友可以参考下
    2015-05-05
  • python assert断言的实例用法

    python assert断言的实例用法

    在本篇文章里小编给大家整理了一篇关于python assert断言的实例用法,有需要的朋友们可以跟着学习参考下。
    2021-09-09
  • Python实现正则表达式匹配任意的邮箱方法

    Python实现正则表达式匹配任意的邮箱方法

    今天小编就为大家分享一篇Python实现正则表达式匹配任意的邮箱方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Numpy安装、升级与卸载的详细图文教程

    Numpy安装、升级与卸载的详细图文教程

    Python官网上的发行版是不包含 NumPy 模块的,下面这篇文章主要给大家介绍了关于Numpy安装、升级与卸载的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Python统计文本词汇出现次数的实例代码

    Python统计文本词汇出现次数的实例代码

    这篇文章主要介绍了Python统计文本词汇出现次数,这种问题在统计文本词汇的次数时经常会遇到,今天给大家分享解决方案,通过实例代码给大家讲解,需要的朋友可以参考下
    2020-02-02
  • 跟老齐学Python之开始真正编程

    跟老齐学Python之开始真正编程

    通过对四则运算的学习,已经初步接触了Python中内容,但是到目前为止,还不能算编程,只能算会用一些指令(或者叫做命令)来做点简单的工作。列位稍安勿躁,下面我们就学习如何编写一个真正的程序。
    2014-09-09

最新评论