字符串格式化中 %s 和 %d 有什么区别?

2025-03-04 08:25:00
admin
原创
98
摘要:问题描述:我不明白它们做什么%s以及%d如何工作。解决方案 1:它们用于格式化字符串。%s用作字符串的占位符,而%d用作数字的占位符。它们的关联值通过运算符通过元组传递%。name = 'marcog' number = 42 print '%s %d' % (name, number) 将打印marcog ...

问题描述:

我不明白它们做什么%s以及%d如何工作。


解决方案 1:

它们用于格式化字符串。%s用作字符串的占位符,而%d用作数字的占位符。它们的关联值通过运算符通过元组传递%

name = 'marcog'
number = 42
print '%s %d' % (name, number)

将打印marcog 42。请注意,name 是一个字符串(%s),number 是一个整数(%d 表示十进制)。

有关详细信息,请参阅https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting

在 Python 3 中,示例如下:

print('%s %d' % (name, number))

解决方案 2:

来自Python 3 文档

%d表示十进制整数

%s适用于通用字符串或对象,如果是对象,它将转换为字符串

考虑以下代码

name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))

输出将是

贾科莫 4.3 4 4.300000 4.3

如您所见%d,将截断为整数,%s将保留格式,%f将打印为浮点数并%g用于通用数字

明显地

print('%d' % (name))

会产生异常;不能将字符串转换为数字

解决方案 3:

%s用作要注入格式化字符串的字符串值的占位符。

%d用作数字或十进制值的占位符。

例如(对于 Python 3)

print ('%s is %d years old' % ('Joe', 42))

将输出

Joe is 42 years old

解决方案 4:

%s这些都是信息丰富的答案,但没有一个能够真正触及和之间区别的核心%d

%s告诉格式化程序在参数上调用str()函数,并且由于我们根据定义强制转换为字符串,%s因此本质上只是执行str(arg)

%d另一方面,是int()在调用之前先调用参数str(),就像str(int(arg)),这会导致int强制转换以及str强制转换。

例如,我可以将十六进制值转换为十进制,

>>> '%d' % 0x15
'21'

或截断浮点数。

>>> '%d' % 34.5
'34'

但如果参数不是数字,则操作将引发异常。

>>> '%d' % 'thirteen'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str

因此,如果目的只是调用str(arg),那么%s就足够了,但如果您需要额外的格式(如格式化浮点小数位)或其他强制,则需要其他格式符号。

使用该f-string符号时,当您省略格式化程序时,默认值为str

>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'

也同样如此string.format;默认值为str

>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'

解决方案 5:

这些是占位符:

例如:'Hi %s I have %d donuts' %('Alice', 42)

这行代码将用 Alice (str) 替换 %s,用 42 替换 %d。

输出:'Hi Alice I have 42 donuts'

大多数情况下,这可以通过“+”来实现。为了更深入地理解您的问题,您可能还需要检查 {} / .format()。以下是一个例子:Python 字符串格式:% vs. .format

另请参见此处的 google python 教程视频@40',其中有一些解释
https://www.youtube.com/watch?v=tKTZoB2Vjuk

解决方案 6:

%d和字符串%s格式化“命令”用于格式化字符串。%d用于数字,%s用于字符串。

例如:

print("%s" % "hi")

print("%d" % 34.6)

传递多个参数:

print("%s %s %s%d" % ("hi", "there", "user", 123456))将会回归hi there user123456

解决方案 7:

%d%s是占位符,它们充当可替换变量。例如,如果您创建 2 个变量

variable_one = "Stackoverflow"
variable_two = 45

您可以使用变量元组将这些变量分配给字符串中的句子。

variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"

请注意,%s适用于字符串,也%d适用于数值或十进制变量。

如果你打印variable_3它看起来会像这样

print(variable_3 % (variable_one, variable_two))

我在 StackOverflow 中搜索答案,发现有超过 45 个答案可以回答我的问题。

解决方案 8:

根据最新标准,应该这样做。

print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))

请检查python3.6 文档和示例程序

解决方案 9:

这是演示 Python 字符串格式及其新方法的基本示例。

my_word = 'epic'
my_number = 1

print('The %s number is %d.' % (my_word, my_number))  # traditional substitution with % operator

//史诗编号为1。

print(f'The {my_word} number is {my_number}.')  # newer format string style

//史诗编号为1。

两者的打印效果相同。

解决方案 10:

说到这...

python3.6 附带了f-strings使格式化变得更容易的功能!

现在,如果您的 python 版本大于 3.6,您可以使用以下可用方法格式化字符串:

name = "python"

print ("i code with %s" %name)          # with help of older method
print ("i code with {0}".format(name))  # with help of format
print (f"i code with {name}")           # with help of f-strings

解决方案 11:

%s 用于保存字符串的空间 %d 用于保存数字的空间

name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))

程序输出

这个视频深入介绍了这个技巧https://www.youtube.com/watch?v=4zN5YsuiqMA

解决方案 12:

如果你想避免 %s 或 %d 那么..

name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)

输出:

my name is marcog and my name is 42

解决方案 13:

例如,您可以使用 %s 和 %d 和 %f,如下所示:

name = 'Ali' ;age = 25  ; live = 'Tehran' ; salary = 1526.73

print('%s is %d years old. he is living in %s and earn %f per month.' % (name, age, live, salary))
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3998  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2749  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   85  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   96  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   83  
热门文章
项目管理软件有哪些?
曾咪二维码

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

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

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用