鱼C论坛

 找回密码
 立即注册
查看: 1773|回复: 12

格式化字符串之填充

[复制链接]
发表于 2023-4-13 14:07:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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


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

如果用其他字符填充在字符串左边或右边应如何修改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)

输出:
*****黄同学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 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()方法才可以,是这个意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-13 15:04:16 | 显示全部楼层
学习学习,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-13 19:34:37 | 显示全部楼层
lzb1001 发表于 2023-4-13 14:55
1、哦,那你的电脑为何:

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

chatgpt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-13 22:57:31 | 显示全部楼层

chatgpt是一个学习python的好工具
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-14 02:07:01 | 显示全部楼层
本帖最后由 lzb1001 于 2023-4-14 09:55 编辑

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

微信截图_20230414020443.jpg
微信截图_20230414020500.jpg


问题1:

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

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

123.jpg
456.jpg

问题2:

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

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

按上面chatGPT的提示:“ * ”表示宽度由参数自动决定,此时需要在占位符前面再传入一个元组来指定宽度。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-14 11:33:43 | 显示全部楼层
lzb1001 发表于 2023-4-14 02:07
按上面大神的提示使用chatGPT来学习,获得如下帮助:


没有大神关注接着话题继续哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-14 17:22:56 | 显示全部楼层
lzb1001 发表于 2023-4-14 02:07
按上面大神的提示使用chatGPT来学习,获得如下帮助:

图片看不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-14 21:23:45 | 显示全部楼层

???没看懂呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-14 21:26:03 | 显示全部楼层
lzb1001 发表于 2023-4-14 21:23
???没看懂呢


现在看到了
chatgpt的资源是从网上学习的,可能看到了些错误的内容,或者在看一个视频的时候(比如小甲鱼的课程),文字识别错误
或者是中英文的一个差异
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 19:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表