Python 中的字符串格式[重复]
- 2024-12-20 08:37:00
- admin 原创
- 64
问题描述:
我想做类似的事情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 中有很多种格式化字符串的方法,例如:
使用该
format()
函数,例如:
x = 'hello'
y = 'person'
xy = '{} {}'.format(x, y)
使用 f 字符串,例如:
x = 'hello'
y = 'person'
xy = f'{x} {y}'
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件