python formatters 与字符串 小结 (python 2)
最近学习python 2 ,觉得有必要小结一下关于字符串处理中的formatters,
转载请声明本文的引用出处:仰望大牛的小清新
0.%进行变量取值使用的时机
在python中,如果我们只是需要在字符串中输出变量的内容,我们可以无需使用formatters,例如:
- # python 2
- #以下代码输出 days 变量的值,没有使用到formatters,因此也不需要使用%
- days = "Mon Tue Wed Thu Fri Sat Sun"
- print "Here are the days: " , days, ".\n These days are perfect."
当我们使用到了formatters的时候,我们才需要%在字符串后取变量的值。如果取一个变量,则只需 % 变量名,如果是多个变量,则需要 %(变量1,变量2,....)
例如:
- #python 2
- #取1个变量的值
- months = "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
- print "Here are the months: %s." % months
- #取多个变量的值,并接一个字符串
- print "The date is: %s %s." % (month, day), "And she will marry to Lu."
1.%s和%r的区别:
对于非字符串类,%s使用str() 方法,而%r使用repr()方法
对于字符串而言,却别就在于,'%s' 才等价于 %r,换句话说,%r会自动给字符串加上单引号,这是由于%r本身 “还原对象”的特性决定的
因此,%r适用于debug,而%s更适用于输出字符串,即使字符串之间可嵌套。
%r产生的,是 “raw presentation”的版本,举例如下
%r用于调试的例子:
- # 如果我们使用%s,则会输出换行符
- # 但如果我们使用%r,则会输出\n,而不换行
- months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
- print "Here are the months: %r" %months
2.python的字符串操作当中支持字符串的嵌套
例如
- # python 2 的示例
- a_str = "Your name is %s."
- my_name = " 张三 "
- print a_str % my_name
更进一步,我们可以将formatters定义为一个变量,使用%r来进行调试性的输出
例如,下面这个例子可以调试4个参数的值
- # -*- coding: utf-8 -*-
- # from __future__ import unicode_literals
- formatter = "%r %r %r %r"
- print formatter % (1, 2, 3, 4)
- print formatter % ("one", "two", "three", "four")
- print formatter % (True, False, True, False)
- print formatter % (formatter, formatter, formatter, formatter)
- print formatter % (
- "I had this thing.",
- "That you could type up right",
- "But it didn't string.",
- "So I said goodnight."
- )
而我们也可以利用字符串*的方法使得调试输出的参数数目可变
例如
- #num为需要调试的参数的数目
- num = 5
- formatter = "%r " * num
- print formatter % (
- "one", "two", "three"
- ,"four", "five"
- )
3. 一个print 语句 执行后默认会换行,在print后面加上逗号,可以使得print不进行换行
例如
- #这两据print将会输出到同一行
- #将第一个print后面的逗号去掉后,将会换行
- print "And everywhere that Marry went.",
- print "I'm here."
4.字符串之间的+操作起到连接字符串的作用
例如
- end1 = "C"
- end2 = "h"
- end3 = "e"
- end4 = "e"
- end5 = "s"
- end6 = "e"
- end7 = "B"
- end8 = "u"
- end9 = "r"
- end10 = "g"
- end11 = "e"
- end12 = "r"
- #watch that comma at the end. try removing it to see what happens
- print end1 + end2 + end3 + end4 + end5 + end6,
- print end7 + end8 + end9 + end10 + end11 + end12
5.字符串的*一个数字n,表示将该字符串连续输出n遍
例如
- #下面两行的行为等价,都是在一行中连续输出10个你好
- print 10 * "你好"
- print "你好" * 10
6.很长的字符串可以用三个双引号开头,跨行写,并以三个双引号结尾
例如
- # python 2
- # 输出跨行的很长的字符串
- print """
- There's somthing going on here.
- With the three double-quotes.
- We'll be able to type as mych as we like.
- Even 4 lines if we want, or 5, or 6
- """
同时,需要注意的是,在""" 之间 """的内容的换行和我们的输入换行是一样的,下面的例子说明了这一点
例如
- # python 2
- # 在三个双引号之间的多行文本,在输出
- #的换行中,与文本本身的换行一致,不需要专门写\n
- #例如下面例子中前几行和最后一行写了\n的换行是等效的
- fat_cat = """
- I'll do a list:
- \t* Cat food
- \t* Fishies
- \t* Catnip\n\t* Grass
- """
- print fat_cat
7.\r是回车符,用于将光标置于行首,将print后面加上逗号,即可以将所有的回车连起来,这样可以起到在一行不断刷新输出的效果
例如
- # 一个有趣的代码实验,%r是回车,用于回到行首
- # 因此%r可以用于刷新符号的代码
- while True:
- for i in ["/","-","|","\\","\""]:
- print "%s\r" % i, #注意行尾的逗号,保证了输入在同一行
python formatters 与字符串 小结 (python 2)的更多相关文章
- Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助
Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助 目录 Pychar ...
- 9.9 Python 文档字符串
9.9 Python 文档字符串. 进入 Python 标准库所在的目录. 检查每个 .py 文件看是否有__doc__ 字符串, 如果有, 对其格式进行适当的整理归类. 你的程序执行完毕后, 应该会 ...
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
- python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化
1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fal ...
- Python 遗传算法实现字符串
Python 遗传算法实现字符串 流程 1. 初始化 2. 适应度函数 3. 选择 4. 交叉 5. 变异 适应度函数计算方法 计算个体间的差:分别计算每个元素与目标元素的差取平方和 种群:计算总体均 ...
- python- 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化
1.双层装饰器 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fa ...
- python 3 学习字符串和编码
字符串和编码 阅读: 895464 字符编码 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字 ...
- python --- 字符编码学习小结(二)
距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...
- Python基础之字符串和编码
字符串和编码 字符串也是一种数据类型,但是字符串比较特殊的是还有个编码问题. 因为计算机自能处理数字,如果徐娅处理文本,就必须先把文本转换为数字才能处理,最早的计算机子设计时候采用8个比特(bit)作 ...
随机推荐
- NOIP临考经验【转】
NOIP临考经验 1.提前15分钟入场,此时静坐调整心态,适当的深呼吸 2.打开编辑器并调整为自己喜欢的界面 3.熟悉文件目录,写好准确无误的代码模板 4.压缩包或许还不能解压,但是文件名已经可以知道 ...
- LeetCode -- 3SumCloset
Question: Given an array S of n integers, find three integers in S such that the sum is closest to a ...
- Robot POJ - 1376
The Robot Moving Institute is using a robot in their local store to transport different items. Of co ...
- hbase集群写不进去数据的问题追踪过程
hbase从集群中有8台regionserver服务器,已稳定运行了5个多月,8月15号,发现集群中4个datanode进程死了,经查原因是内存 outofMemory了(因为这几台机器上部署了spa ...
- pip 使用国内源
常用国内的pip源如下:阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple ...
- 7月16号day8总结
今天学习过程和小结 1.列举Linux常用命令 shutdown now Linux关机 rebot重启 mkdir mkdir -p递归创建 vi/touth filename rm -r file ...
- How to setup Active Directory (AD) In Windows Server 2016
Windows Server 2016 is the newest server operating system released by Microsoft in October 12th, 201 ...
- es6+最佳入门实践(14)
14.模版字符串 模版字符串(template string)是增强版的字符串,定义一个模版字符串需要用到反引号 let s = `这是一个模版字符串` console.log(s) 14.1.模版字 ...
- vue相对路径修改
如果静态文件不是部署在网站根目录下,vue-cli将给你造成巨大的麻烦. 你不能直接把build好的文件抛进一个目录.你不能直接在本地打开用vue做好的静态网站. 改成相对路径,主要需要做两步. 1. ...
- 设计模式功能概述(Design Patterns)
1.Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2.Adapter:将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于 ...