lzb1001 发表于 2023-4-13 14:07:42

格式化字符串之填充

本帖最后由 lzb1001 于 2023-4-13 14:09 编辑

b = "%10s" % ("黄同学")
print(b)


上面的代码用空格填充在字符串左边

如果用其他字符填充在字符串左边或右边应如何修改?

isdkz 发表于 2023-4-13 14:12:24

要使用其他字符填充字符串,您可以在格式化字符串中的%符号后添加一个填充字符。这里是一个例子,使用星号*作为填充字符:

b = "%*10s" % ('*', "黄同学")
print(b)
输出:

*****黄同学

如果您想在字符串的右边添加填充字符,可以使用str.ljust()或str.rjust()方法。这里有一个例子,使用ljust()在右边添加星号*:

b = "黄同学".ljust(10, '*')
print(b)

输出:

黄同学*****

如果要在左边添加填充字符,可以使用rjust()方法:

b = "黄同学".rjust(10, '*')
print(b)

输出:

*****黄同学

lzb1001 发表于 2023-4-13 14:21:25

本帖最后由 lzb1001 于 2023-4-13 14:26 编辑

isdkz 发表于 2023-4-13 14:12
要使用其他字符填充字符串,您可以在格式化字符串中的%符号后添加一个填充字符。这里是一个例子,使用星号* ...

------------------------------------------
Windows 10 专业版 | Python 3.7.6
------------------------------------------


>>> b = "%*10s" % ('*', "黄同学")
Traceback (most recent call last):
File "<pyshell#111>", line 1, in <module>
    b = "%*10s" % ('*', "黄同学")
TypeError: * wants int
>>> b = "%*10s" % ("*", "黄同学")
Traceback (most recent call last):
File "<pyshell#112>", line 1, in <module>
    b = "%*10s" % ("*", "黄同学")
TypeError: * wants int

isdkz 发表于 2023-4-13 14:32:06

lzb1001 发表于 2023-4-13 14:21
------------------------------------------
Windows 10 专业版 | Python 3.7.6
------------------ ...

非常抱歉,我之前的回答中给出的示例是错误的。在使用 % 进行字符串格式化时,无法直接指定非空格字符作为填充字符。请允许我纠正这个错误。

在这种情况下,您可以使用 str.format() 函数来实现相同的效果:

b = "{:*>10}".format("黄同学")
print(b)

输出:

*****黄同学
这里,我们在花括号 {} 内使用 :* 指定了填充字符为星号 *,并使用 >10 表示右对齐,总宽度为 10。

lzb1001 发表于 2023-4-13 14:55:21

本帖最后由 lzb1001 于 2023-4-13 17:08 编辑

isdkz 发表于 2023-4-13 14:32
非常抱歉,我之前的回答中给出的示例是错误的。在使用 % 进行字符串格式化时,无法直接指定非空格字符作 ...

1、哦,那你的电脑为何:

b = "%*10s" % ('*', "黄同学")
print(b)

能返回:

*****黄同学



2、也就是说用%无法实现用其他字符来填充,必须使用format()方法才可以,是这个意思吗?

同舟 发表于 2023-4-13 15:04:16

学习学习,

歌者文明清理员 发表于 2023-4-13 19:34:37

lzb1001 发表于 2023-4-13 14:55
1、哦,那你的电脑为何:

b = "%*10s" % ('*', "黄同学")


chatgpt

lzb1001 发表于 2023-4-13 22:57:31

歌者文明清理员 发表于 2023-4-13 19:34
chatgpt

chatgpt是一个学习python的好工具

lzb1001 发表于 2023-4-14 02:07:01

本帖最后由 lzb1001 于 2023-4-14 09:55 编辑

按上面大神的提示使用chatGPT来学习,获得如下帮助:





问题1:

但大家发现没有:用*填充并不能实现(即返回的结果中并没有填充的*),不知道怎么回事?

---以下也是chatGPT的回复:注意红色标注!看来chatGPT也不一定靠谱啊……




问题2:

填充和对齐有以下两种方式,我想问的是下面代码中*的作用?没看懂它

---左填充/右对齐(默认):"%10s" % ("字符串")或"%*s" % (10, "字符串")
---右填充/左对齐:"%-10s" % ("字符串")或”%-*s”% (10,“字符串”)
---两侧填充/居中对齐:不可

按上面chatGPT的提示:“ * ”表示宽度由参数自动决定,此时需要在占位符前面再传入一个元组来指定宽度。

lzb1001 发表于 2023-4-14 11:33:43

lzb1001 发表于 2023-4-14 02:07
按上面大神的提示使用chatGPT来学习,获得如下帮助:




没有大神关注接着话题继续哦

歌者文明清理员 发表于 2023-4-14 17:22:56

lzb1001 发表于 2023-4-14 02:07
按上面大神的提示使用chatGPT来学习,获得如下帮助:




图片看不到

lzb1001 发表于 2023-4-14 21:23:45

歌者文明清理员 发表于 2023-4-14 17:22
图片看不到

???没看懂呢

歌者文明清理员 发表于 2023-4-14 21:26:03

lzb1001 发表于 2023-4-14 21:23
???没看懂呢

现在看到了
chatgpt的资源是从网上学习的,可能看到了些错误的内容,或者在看一个视频的时候(比如小甲鱼的课程),文字识别错误
或者是中英文的一个差异
页: [1]
查看完整版本: 格式化字符串之填充