鱼C论坛

 找回密码
 立即注册
查看: 1443|回复: 11

python中字符串的格式化问题

[复制链接]
发表于 2017-11-21 17:33:03 | 显示全部楼层 |阅读模式

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

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

x
请教:
        >>> "{{0}}".format("不打印")
        '{0}'
       
        为什么会有这样的结果????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-21 17:38:30 | 显示全部楼层
因为,
format函数会试图把不打印三个字放入第一层大括号进行格式化,可惜的是,第一层大括号内还有一层(里面有什么都无所谓,重要的是有东西),它就会开始寻找一个名为{0}的变量,如果有就打印,没有就直接打印{0}。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-21 17:39:34 | 显示全部楼层
这样?
test.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-21 17:40:56 | 显示全部楼层
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
这是选自菜鸟教程的一个例子,第一层大括号里面的内容就是变量名,你这个就是找不到指定变量名。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-21 17:46:48 | 显示全部楼层
新手·ing 发表于 2017-11-21 17:38
因为,
format函数会试图把不打印三个字放入第一层大括号进行格式化,可惜的是,第一层大括号内还有一层( ...

它就会开始寻找一个名为{0}的变量,如果有就打印,没有就直接打印{0}。
这句话不理解,麻烦可以详细点吗,是在{{0}}内寻找一个名为{0}的变量吗?  谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-21 17:49:48 | 显示全部楼层
平淡最真 发表于 2017-11-21 17:46
它就会开始寻找一个名为{0}的变量,如果有就打印,没有就直接打印{0}。
这句话不理解,麻烦可以详细点吗 ...

就是在.format后面的括号中寻找一个名为{0}的变量。
你试试这样:
'{{0}}'.format({0}='不打印')
上面只是个举例,实际上不行,因为变量名不能以{开头。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-21 17:59:57 From FishC Mobile | 显示全部楼层
大括号太多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-21 18:15:12 | 显示全部楼层
新手·ing 发表于 2017-11-21 17:40
这是选自菜鸟教程的一个例子,第一层大括号里面的内容就是变量名,你这个就是找不到指定变量名。

这个我知道  是关键字参数吧    正确的写法我懂得,就是不知道 1 楼我的那种写法是怎么实现那个效果的,这样的效果我看小甲鱼视频的时候老师只是一句带过了,我想知道 1 楼那种效果是怎么实现的,而且没报错,费解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-21 21:41:09 | 显示全部楼层
本帖最后由 lh625243422 于 2017-11-21 22:06 编辑
新手·ing 发表于 2017-11-21 17:38
因为,
format函数会试图把不打印三个字放入第一层大括号进行格式化,可惜的是,第一层大括号内还有一层( ...

使用2个大括号表示转义大括号其原理是2个大括号会被解释为普通符号(相对其他大括号在format来看表示一个格式化的位置)只表示字符{},不报错的原理是format的参数不一定在字符串中使用(不会出错)。例如‘123’.format(456),输出‘123’
注意:
'{0:{fill}{align}16}'.format(text, fill=align, align=align)
这样的{}嵌套是能够正确的解释的(先解释内层的{},再解释外层。内层的表示了格式化字符串的参数(fill 表示填充的字符串,align 表示对齐的方式16表示最小的宽度)
具体请查看官方文档6.1.2-6.13.2. Custom String Formatting


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

使用道具 举报

发表于 2017-11-22 19:34:59 | 显示全部楼层
平淡最真 发表于 2017-11-21 18:15
这个我知道  是关键字参数吧    正确的写法我懂得,就是不知道 1 楼我的那种写法是怎么实现那个效果的, ...

直接在大括号中写一个数字,就会根据数字把字符串填充进去,就像切片一样从零开始。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-23 09:46:28 | 显示全部楼层
新手·ing 发表于 2017-11-22 19:34
直接在大括号中写一个数字,就会根据数字把字符串填充进去,就像切片一样从零开始。

你好  你说的是位置参数嘛??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-23 09:47:26 | 显示全部楼层
新手·ing 发表于 2017-11-22 19:34
直接在大括号中写一个数字,就会根据数字把字符串填充进去,就像切片一样从零开始。

你好  你说的是位置参数嘛??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 03:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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