Python 3 中的字符串格式[重复]

2025-02-24 09:29:00
admin
原创
67
摘要:问题描述:我在 Python 2 中这样做:"(%d goals, $%d)" % (self.goals, self.penalties) 这个 Python 3 的版本是什么?我尝试在线搜索示例但得到的都是 Python 2 版本。解决方案 1:以下是有关“新”格式语法的文档。例如:&...

问题描述:

我在 Python 2 中这样做:

"(%d goals, $%d)" % (self.goals, self.penalties)

这个 Python 3 的版本是什么?

我尝试在线搜索示例但得到的都是 Python 2 版本。


解决方案 1:

以下是有关“新”格式语法的文档。例如:

"({:d} goals, ${:d})".format(self.goals, self.penalties)

如果goalspenalties都是整数(即它们的默认格式就可以),则可以缩短为:

"({} goals, ${})".format(self.goals, self.penalties)

而且由于参数是的字段self,因此也可以使用单个参数两次来完成此操作(正如@Burhan Khalid 在评论中指出的那样):

"({0.goals} goals, ${0.penalties})".format(self)

解释:

  • {}表示仅下一个位置参数,具有默认格式;

  • {0}表示带有索引的参数0,具有默认格式;

  • {:d}是下一个位置参数,采用十进制整数格式;

  • {0:d}是带有索引的参数0,采用十进制整数格式。

选择参数时,您还可以做很多其他事情(使用命名参数而不是位置参数、访问字段等),还可以做很多格式选项(填充数字、使用千位分隔符、显示或不显示符号等)。其他一些示例:

"({goals} goals, ${penalties})".format(goals=2, penalties=4)
"({goals} goals, ${penalties})".format(**self.__dict__)

"first goal: {0.goal_list[0]}".format(self)
"second goal: {.goal_list[1]}".format(self)

"conversion rate: {:.2f}".format(self.goals / self.shots) # '0.20'
"conversion rate: {:.2%}".format(self.goals / self.shots) # '20.45%'
"conversion rate: {:.0%}".format(self.goals / self.shots) # '20%'

"self: {!s}".format(self) # 'Player: Bob'
"self: {!r}".format(self) # '<__main__.Player instance at 0x00BF7260>'

"games: {:>3}".format(player1.games)  # 'games: 123'
"games: {:>3}".format(player2.games)  # 'games:   4'
"games: {:0>3}".format(player2.games) # 'games: 004'

注意:正如其他人指出的那样,新格式不会取代前者,这两种格式在 Python 3 和较新版本的 Python 2 中都可用。有些人可能会说这是一个偏好问题,但恕我直言,新格式比旧格式更具表现力,应该在编写新代码时使用(当然,除非它针对的是较旧的环境)。

解决方案 2:

Python 3.6 现在支持使用PEP 498进行简写文字字符串插值。对于您的用例,新语法很简单:

f"({self.goals} goals, ${self.penalties})"

这与以前的标准类似.format,但可以轻松完成以下操作:

>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal('12.34567')
>>> f'result: {value:{width}.{precision}}'
'result:      12.35'

解决方案 3:

该行在 Python 3 中按原样工作。

>>> sys.version
'3.2 (r32:88445, Oct 20 2012, 14:09:29) 
[GCC 4.5.2]'
>>> "(%d goals, $%d)" % (self.goals, self.penalties)
'(1 goals, $2)'

解决方案 4:

我喜欢这种方法

my_hash = {}
my_hash["goals"] = 3 #to show number
my_hash["penalties"] = "5" #to show string
print("I scored %(goals)d goals and took %(penalties)s penalties" % my_hash)

请注意分别附加在括号中的 d 和 s。

输出将是:

I scored 3 goals and took 5 penalties

解决方案 5:

从Python 3.6开始可以使用“f-strings”

f'({self.goals} goals, ${self.penalties})'
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2757  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1693  
  在全球化的浪潮下,企业的业务范围不断拓展,跨文化协作变得愈发普遍。不同文化背景的团队成员在合作过程中,由于语言、价值观、工作习惯等方面的差异,往往会面临诸多沟通挑战。而产品生命周期管理(PLM)系统作为企业管理产品全生命周期的重要工具,如何有效支持跨文化协作成为了关键问题。通过合理运用沟通策略,PLM系统能够在跨文化团...
plm是什么软件   15  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与管理过程中扮演着至关重要的角色,其中文档版本控制是确保产品数据准确性、完整性和可追溯性的关键环节。有效的文档版本控制能够避免因版本混乱导致的错误、重复工作以及沟通不畅等问题,提升企业整体的运营效率和产品质量。接下来,我们将深入探讨 PLM 系统实现文档版本控制的 6...
plm是什么意思   19  
  PLM(产品生命周期管理)项目管理旨在通过有效整合流程、数据和人员,优化产品从概念到退役的整个生命周期。在这个过程中,敏捷测试成为确保产品质量、加速交付的关键环节。敏捷测试强调快速反馈、持续改进以及与开发的紧密协作,对传统的测试流程提出了新的挑战与机遇。通过对测试流程的优化,能够更好地适应PLM项目的动态变化,提升产品...
plm管理系统   18  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用