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

2024-12-20 08:37:00
admin
原创
63
摘要:问题描述:我想做类似的事情String.Format("[{0}, {1}, {2}]", 1, 2, 3)并返回:[1, 2, 3] 我如何用 Python 来实现这一点?解决方案 1:先前的答案使用了 % 格式,该格式在 Python 3.0+ 中已逐步淘汰。假设您使用的是 Pytho...

问题描述:

我想做类似的事情String.Format("[{0}, {1}, {2}]", 1, 2, 3)并返回:

[1, 2, 3]

我如何用 Python 来实现这一点?


解决方案 1:

先前的答案使用了 % 格式,该格式在 Python 3.0+ 中已逐步淘汰。假设您使用的是 Python 2.6+,则此处描述了一种更具未来性的格式化系统:

http://docs.python.org/library/string.html#formatstrings

尽管还有更高级的功能,但最简单的形式最终看起来非常接近您所写的内容:

>>> "[{0}, {1}, {2}]".format(1, 2, 3)
[1, 2, 3]

解决方案 2:

您可以通过三种方式进行操作:


使用 Python 的自动漂亮打印:

print([1, 2, 3])   # Prints [1, 2, 3]

用变量显示同样的事情:

numberList = [1, 2]
numberList.append(3)
print(numberList)   # Prints [1, 2, 3]

使用“经典”字符串替换(ala C 的 printf)。请注意,此处 % 作为字符串格式说明符和 % 将列表(实际上是一个元组)应用于格式化字符串的不同含义。(请注意,% 用作算术表达式的模数(余数)运算符。)

print("[%i, %i, %i]" % (1, 2, 3))

注意,如果我们使用预定义变量,我们需要将其转换为元组来执行此操作:

print("[%i, %i, %i]" % tuple(numberList))

使用 Python 3 字符串格式。这在早期版本(从 2.6 开始)中仍然可用,但在 Py 3 中是“新”的方法。请注意,您可以使用位置(序数)参数或命名参数(出于好玩,我将它们按相反顺序排列)。

print("[{0}, {1}, {2}]".format(1, 2, 3))

请注意,名称“一”、“二”和“三”可以是任何有意义的名称。)

print("[{one}, {two}, {three}]".format(three=3, two=2, one=1))

解决方案 3:

您正在寻找字符串格式,在 python 中它基于 C 中的 sprintf 函数。

print "[%s, %s, %s]" % (1, 2, 3)

完整参考请参见:http:
//docs.python.org/library/stdtypes.html#string-formatting

解决方案 4:

PEP 498 添加python 3.6了文字字符串插值,这基本上是 的缩写形式format

您现在可以执行以下操作:

f"[{1}, {2}, {3}]"

我发现有用的其他常见用途是:

pi = 3.141592653589793
today = datetime(year=2018, month=2, day=3)

num_2 = 2     # Drop assigned values in
num_3 = "3"   # Call repr(), or it's shortened form !r
padding = 5   # Control prefix padding
precision = 3 #   and precision for printing


f"""[{1},
     {num_2},
     {num_3!r},
     {pi:{padding}.{precision}},
     {today:%B %d, %Y}]"""

这将产生:

"[1,
     2,
     '3',
      3.14,
     February 03, 2018]"

解决方案 5:

要按顺序打印元素,请使用 {} 而不指定索引

print('[{},{},{}]'.format(1,2,3))

(从 Python 2.7 和 Python 3.1 开始有效)

解决方案 6:

我认为缺少这种组合:P

"[{0}, {1}, {2}]".format(*[1, 2, 3])

解决方案 7:

你还没有做出非常令人称赞的表述,但我猜这是你正在寻找的:

foo = "Hello"
bar = "world"
baz = 2
print "%s, %s number %d" % (foo, bar, baz)

解决方案 8:

你有很多解决方案:)

简单方法(C 风格)

print("[%i, %i, %i]" %(1, 2, 3))

使用str.format()

print("[{0}, {1}, {2}]", 1, 2, 3)

使用str.Template()

s = Template('[$a, $b, $c]')
print(s.substitute(a = 1, b = 2, c = 3))

您可以阅读PEP 3101——高级字符串格式

解决方案 9:

非常简短的回答。

例如: print("{:05.2f}".format(2.5163)) 返回 02.51

  • {} 在此处设置变量

  • :开始造型

  • 0 以零开头,“ ” 以空格开头

  • 5完整字符串的长度(点计数,00.00 是长度 5 而不是 4)

  • .2 小数点后两位数,四舍五入。

  • f 为浮点数

解决方案 10:

在回答这个问题之前,请阅读下面几篇文章:

Python 官方文档在这里

有用的文章

  • Python 字符串 format() -此处

现在让我们回答这个问题

问题:我想做类似的事情:

String.Format("[{0}, {1}, {2}]", 1, 2, 3)返回:

[1, 2, 3]

我如何用 Python 来实现这一点?

回答

嗯,这当然是一行代码就能回答的

print("[{0},{1},{2}]".format(1, 2, 3))

当你执行这一行代码时,[1, 2, 3]将打印一个包含三个值的列表。我希望这很简单,不言自明。

谢谢

塔努

解决方案 11:

自从python-3.6,Python 支持文字字符串插值 [pep-498]。因此,您可以使用f字符串前缀进行格式化。例如:

x = 1
y = 2
z = 3
f'[{x}, {y}, {z}]'

然后产生:

>>> f'[{x}, {y}, {z}]'
'[1, 2, 3]'

String.Format(…)在问题中的C# (的语言)中,由于c#-6.0,还支持字符串插值 [microsoft-doc],例如:

int x = 1;
int y = 2;
int z = 3;
string result = $"[{x}, {y}, {z}]";

例如:

csharp> int x = 1;
csharp> int y = 2;
csharp> int z = 3;
csharp> $"[{x}, {y}, {z}]";
"[1, 2, 3]"

解决方案 12:

如果你不知道列表中有多少个项目,这种方法是最通用的

>>> '[{0}]'.format(', '.join([str(i) for i in [1,2,3]]))

'[1, 2, 3]'

对于字符串列表来说更简单

>>> '[{0}]'.format(', '.join(['a','b','c']))
'[a, b, c]'

解决方案 13:

有 3 种方法。

“%”运算符的原始方式是:

x, y, z = 1, 2, 3

print("[%i, %i, %i]" % (x, y, z)) # [1, 2, 3]

Python 2.6开始, “str.format()”

x, y, z = 1, 2, 3

print("[{0}, {1}, {2}]".format(x, y, z)) # [1, 2, 3]

自Python 3.6以来的“f 字符串”

x, y, z = 1, 2, 3

print(f'[{x}, {y}, {z}]') # [1, 2, 3]

解决方案 14:

您可以在多个地方找到答案,例如这里和这里。

在 Python 中有很多种格式化字符串的方法,例如:

  1. 使用该format()函数,例如:

x = 'hello'
y = 'person'
xy = '{} {}'.format(x, y)
  1. 使用 f 字符串,例如:

x = 'hello'
y = 'person'
xy = f'{x} {y}'
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   990  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   26  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   27  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   26  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   53  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用