首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python基础教程3.1 字符串基本操作&3.2 设置字符串的格式

3.1 字符串基本操作

3.2 设置字符串的格式:精简版

如果你是Python编程新手,可能不会用到所有的Python字符串格式设置选项,因此这里介绍精简版。如果你想了解详情,请参阅接下来的3.3节,否则只需阅读本节,再直接跳到3.4节。

将值转换为字符串并设置其格式是一个重要的操作,需要考虑众多不同的需求,因此随着时间的流逝, Python提供了多种字符串格式设置方法。以前,主要的解决方案是使用字符串格式设

置运算符——百分号。这个运算符的行为类似于C语言中的经典函数printf:在%左边指定一个字符串(格式字符串),并在右边指定要设置其格式的值。指定要设置其格式的值时,可使用单个值(如字符串或数字),可使用元组(如果要设置多个值的格式),还可使用字典(这将在下一章讨论),其中最常见的是元组。

>>> format = "Hello, s. s enough for ya?" % %

>>> values = ('world', 'Hot')

>>> format values %

'Hello, world. Hot enough for ya?'

上述格式字符串中的%s称为转换说明符,指出了要将值插入什么地方。s意味着将值视为字符串进行格式设置。如果指定的值不是字符串,将使用str将其转换为字符串。其他说明符将导致其他形式的转换。例如,%.3f将值的格式设置为包含3位小数的浮点数。

这种格式设置方法现在依然管用,且依然活跃在众多代码中,因此你很可能遇到。可能遇到的另一种解决方案是所谓的模板字符串。它使用类似于UNIX shell的语法,旨在简化基本的格式设置机制,如下所示:

>>> from string import Template

>>> tmpl = Template("Hello, $who! $what enough for ya?")

>>> tmpl.substitute(who="Mars", what="Dusty")

'Hello, Mars! Dusty enough for ya?'

包含等号的参数称为关键字参数,第6章将详细介绍这个术语。在字符串格式设置中,可将关键字参数视为一种向命名替换字段提供值的方式。

编写新代码时,应选择使用字符串方法format,它融合并强化了早期方法的优点。使用这种方法时,每个替换字段都用花括号括起,其中可能包含名称,还可能包含有关如何对相应的值进行转换和格式设置的信息。

在最简单的情况下,替换字段没有名称或将索引用作名称。

>>> "{}, {} and {}".format("first", "second", "third")

'first, second and third'

>>> ", and ".format("first", "second", "third")

'first, second and third'

然而,索引无需像上面这样按顺序排列。

>>> " ".format("be", "not", "or", "to")

'to be or not to be'

命名字段的工作原理与你预期的完全相同。

>>> from math import pi

>>> " is approximately .".format(value=pi, name="π")

'π is approximately 3.14.'

当然,关键字参数的排列顺序无关紧要。在这里,我还指定了格式说明符.2f,并使用冒号将其与字段名隔开。它意味着要使用包含2位小数的浮点数格式。如果没有指定.2f,结果将如下:

>>> " is approximately .".format(value=pi, name="π")

'π is approximately 3.141592653589793.'

最后,在Python 3.6中,如果变量与替换字段同名,还可使用一种简写。在这种情况下,可使用f字符串——在字符串前面加上f。

>>> from math import e

>>> f"Euler's constant is roughly ."

"Euler's constant is roughly 2.718281828459045."

在这里,创建最终的字符串时,将把替换字段e替换为变量e的值。这与下面这个更明确一些的表达式等价:

>>> "Euler's constant is roughly .".format(e=e)

"Euler's constant is roughly 2.718281828459045.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180830G0BYJ000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券