跟老齐学Python之从格式化表达式到方法

企鹅博客
企鹅博客
企鹅博客
25193
文章
0
评论
2019年10月1日01:58:24 评论 255 views
广告也精彩

现在我们就格式化方法做一个详细一点的交代。

基本的操作

所谓格式化方法,就是可以先建立一个输出字符串的模板,然后用format来填充模板的内容。

复制代码 代码如下:

>>> #先做一个字符串模板

>>> template = "My name is {0}. My website is {1}. I am writing {2}."

>>> #用format依次对应模板中的序号内容
>>> template.format("qiwsir","qiwsir.github.io","python")
'My name is qiwsir. My website is qiwsir.github.io. I am writing python.'

当然,上面的操作如果你要这样做,也是可以的:

复制代码 代码如下:

>>> "My name is {0}. My website is {1}. I am writing {2}.".format("qiwsir","qiwsir.github.io","python")

'My name is qiwsir. My website is qiwsir.github.io. I am writing python.'

这些,跟用%写的表达式没有什么太大的区别。不过看官别着急,一般小孩子都区别不到,长大了才有区别的。慢慢看,慢慢实验。

除了可以按照对应顺序(类似占位符了)填充模板中的位置之外,还能这样,用关键字来指明所应该田中的内容。

复制代码 代码如下:

>>> template = "My name is {name}. My website is {site}"

>>> template.format(site='qiwsir.github.io', name='qiwsir')

'My name is qiwsir. My website is qiwsir.github.io'

关键词所指定的内容,也不一定非是str,其它的数据类型也可以。此外,关键词和前面的位置编号,还可以混用。比如:

复制代码 代码如下:

>>> "{number} is in {all}. {0} are my number.".format("seven",number=7,all=[1,2,3,4,5,6,7,8,9,0])

'7 is in [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]. seven are my number.'

是不是开始感觉有点意思了?看输出结果,就知道,经过format方法得到是一个新的str。

序列对象的偏移量

有这样一个要求:在输出中,显示出一个单词的第一个字母和第三个个字母。比如单词python,要告诉看官,第一字母是p,第三个字母是t。

这个问题并不难。实现方法也不少,这里主要是要展示一下偏移量在format中的应用。

复制代码 代码如下:

>>> template = "First={0[0]}, Third={0[2]}"

>>> template.format(word)

'First=p, Third=t'

list也是序列类型的,其偏移量也可。

复制代码 代码如下:

>>> word_lst = list(word)

>>> word_lst

['p', 'y', 't', 'h', 'o', 'n']

>>> template

'First={0[0]}, Third={0[2]}'

>>> template.format(word_lst)

'First=p, Third=t'

对上面的综合一下,稍微啰嗦一点的实验:

复制代码 代码如下:

>>> template = "The word is {0}, Its first is {0[0]}. Another word is {1}, Its second is {1[1]}."

>>> template.format("python","learn")

'The word is python, Its first is p. Another word is learn, Its second is e.'

>>> "{name}\'s first is {name[0]}".format(name="qiwsir") #指定关键词的值的偏移量
"qiwsir's first is q"

值得注意的是,偏移量在序列类型的数据中,因为可以是负数,即能够从右边开始计数。

复制代码 代码如下:

>>> word

'python'

>>> word[-1]

'n'

>>> word[-2]

'o'

但是,在模板中,无法使用负数的偏移量。

复制代码 代码如下:

>>> "First={0[0]}, End={0[-1]}".format(word) #报错

Traceback (most recent call last):

File " ", line 1, in

TypeError: string indices must be integers, not str

>>> "First={0[0]}, End={0[5]}".format(word) #把-1改为5就可以了。
'First=p, End=n'

当然,放到模板外面是完全可行的。这样就好了:

复制代码 代码如下:

>>> "First={0}, End={1}".format(word[0],word[-1])

'First=p, End=n'

dictionary的键

直接上实验,先观察,再得结论

复制代码 代码如下:

>>> myinfo

{'website': 'qiwsir.github.io', 'name': 'qiwsir', 'room': 703}

>>> template = "I am {0[name]}"

>>> template.format(myinfo)

'I am qiwsir'

>>> template = "I am {0[name]}. My QQ is {qq}"

>>> template.format(myinfo,qq="26066913")

'I am qiwsir. My QQ is 26066913'

位置后面跟键,就能得到format的参数中字典的键对应的值。太罗嗦了吧,看例子就明白了。出了根据位置得到,还能够根据关键词得到:

复制代码 代码如下:

>>> myinfo

{'website': 'qiwsir.github.io', 'name': 'qiwsir', 'room': 703}

>>> "my website is {info[website]}, and I like {0}".format("python",info=myinfo) #关键词info引用的是一个字典

'my website is qiwsir.github.io, and I like python'

模板中添加属性

看标题不懂在说什么。那就看实验吧。

复制代码 代码如下:

>>> import math

>>> "PI is {PI.pi}".format(PI=math)

'PI is 3.14159265359'

这是用关键词,下面换个稍微复杂点,用位置的。

复制代码 代码如下:

>>> import sys,math

>>> 'PI is {0.pi}. My lptop runs {1.platform}'.format(math,sys)

'PI is 3.14159265359. My lptop runs linux2'

看官理解了吧。

其它进制

在这个世界上的数学领域,除了有我们常常用到的十进制、十二进制(几点了,这是你我常用到的,钟表面就是12进制)、六十进制(这个你也熟悉的)外,还有别的进制,比如二进制、八进制、十六进制等等。此处不谈进制问题,有兴趣详细了解,请各自google。不过,进制的确在计算机上很重要的。因为机器在最底层是用二进制的。

这里只是说明一下输出时候的进制问题。

>>> "{0:X}, {1:o}, {2:b}".format(255,255,255)
'FF, 377, 11111111'
X:十六进制,Hex
o:八进制,octal
b:二进制,binary
顺便补充,对于数的格式化方法输出和格式化表达式一样,就不赘述了。

在格式化方法中,还能够指定字符宽度,左右对齐等简单排版格式,不过,在我的经验中,这些似乎用的不怎么多。如果看官需要,可以google或者到官方文档看看即可。

关于格式化表达式和格式化方法,有的人进行了不少比较,有的人说用这个,有的人倾向用那个。我的建议是,你用哪个顺手就用哪个。切忌门派之见呀。不过,有人传说格式化表达式可能在将来某个版本中废除。那是将来的事情,将来再说好了。现在,你就捡着顺手的用吧。

  • 微信
  • 分享
  • 跟老齐学Python之从格式化表达式到方法

  • 相关标签:跟老齐学Python 从格式化表达式到方法
  • 本文原创发布php教程 ,转载请注明出处,感谢您的尊重!
    • 上一篇:跟老齐学Python之for循环语句
    • 下一篇:python基于xml parse实现解析cdatasection数据

    相关文章

    相关视频

    • 在Django框架中运行Python应用全攻略
    • 在Python的Django框架中创建和使用模版
    • python获取元素在数组中索引号的方法
    • 浅谈python中截取字符函数strip,lstr...
    • 跟老齐学Python之从格式化表达式到方法
    • 轮播图案例讲解
    • 轮播图案例的预备知识(3)
    • 轮播图案例的预备知识(2)
    • 轮播图案例的预备知识(1)

    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论

  • 跟老齐学Python之从格式化表达式到方法
  • 立即提交

    专题推荐

    • 跟老齐学Python之从格式化表达式到方法 独孤九贱-php全栈开发教程

      全栈 100W+

      主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

    • 跟老齐学Python之从格式化表达式到方法 玉女心经-web前端开发教程

      入门 50W+

      主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

    • 跟老齐学Python之从格式化表达式到方法 天龙八部-实战开发教程

      实战 80W+

      主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

    作者信息
    跟老齐学Python之从格式化表达式到方法

    php教程

    认证0级讲师

    最近文章

    发布技术文章

    • 最新文章
    • 热门排行

      跟老齐学Python之从格式化表达式到方法

    • python之禅怎么打出来
    • python怎么学
    • boosting和bootstrap区别
    • python库是什么意思
    • python卸载后怎么也安装不上
    • python安装后怎么不见了
    • python怎么卸载模块
    • python能做什么?是什么?

      跟老齐学Python之从格式化表达式到方法

    • pickle库的使用详解
    • Anaconda的新手使用大全
    • python爬虫是什么?为什么把python叫做爬虫?
    • Python微信库:itchat的用法详解
    • 关于python3学习基础知识总结
    • python爬虫是什么
    • 使用Python可以做什么
    • python如何实现可视化热力图

    推荐视频教程

  • 跟老齐学Python之从格式化表达式到方法 javascript初级视频教程
  • 跟老齐学Python之从格式化表达式到方法 jquery 基础视频教程
  • 视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • 网站首页
    • PHP视频
    • PHP实战

    PHP中文网:独家原创,永久免费的在线php视频教程,php技术学习阵地!

    Copyright 2014-2019 http://www.php.cn/ All Rights Reserved | 皖B2-20150071-9 跟老齐学Python之从格式化表达式到方法 皖公网安备 34010402701654号 免责申明赞助与捐赠

    企鹅博客
    • 本文由 发表于 2019年10月1日01:58:24
    • 转载请务必保留本文链接:https://www.qieseo.com/337148.html
    新手python用什么版本好? python教程

    新手python用什么版本好?

    想学习Python的人都会有一个困惑,那就是Python目前有两个版本Python2和Python3,Python2与Python3有何区别,两个版本该学习哪个好呢? python3 和 python...
    python中队列的实现方法(代码示例) python教程

    python中队列的实现方法(代码示例)

    本篇文章给大家带来的内容是关于python中队列的实现方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 对于python来说,要实现一个队列的类根据已经有的方法,是很简...

    发表评论