最近学习python 2 ,觉得有必要小结一下关于字符串处理中的formatters,

转载请声明本文的引用出处:仰望大牛的小清新

0.%进行变量取值使用的时机

在python中,如果我们只是需要在字符串中输出变量的内容,我们可以无需使用formatters,例如:

  1. # python 2
  2. #以下代码输出 days 变量的值,没有使用到formatters,因此也不需要使用%
  3. days = "Mon Tue Wed Thu Fri Sat Sun"
  4. print "Here are the days: " , days, ".\n These days are perfect."

当我们使用到了formatters的时候,我们才需要%在字符串后取变量的值。如果取一个变量,则只需 % 变量名,如果是多个变量,则需要 %(变量1,变量2,....)

例如:

  1. #python 2
  2. #取1个变量的值
  3. months = "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
  4. print "Here are the months: %s." % months
  5.  
  6. #取多个变量的值,并接一个字符串
  7. 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用于调试的例子:

  1. # 如果我们使用%s,则会输出换行符
  2. # 但如果我们使用%r,则会输出\n,而不换行
  3. months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
  4. print "Here are the months: %r" %months

2.python的字符串操作当中支持字符串的嵌套

例如

  1. # python 2 的示例
  2. a_str = "Your name is %s."
  3. my_name = " 张三 "
  4. print a_str % my_name

更进一步,我们可以将formatters定义为一个变量,使用%r来进行调试性的输出

例如,下面这个例子可以调试4个参数的值

  1. # -*- coding: utf-8 -*-
  2. # from __future__ import unicode_literals
  3.  
  4. formatter = "%r %r %r %r"
  5.  
  6. print formatter % (1, 2, 3, 4)
  7. print formatter % ("one", "two", "three", "four")
  8. print formatter % (True, False, True, False)
  9. print formatter % (formatter, formatter, formatter, formatter)
  10. print formatter % (
  11. "I had this thing.",
  12. "That you could type up right",
  13. "But it didn't string.",
  14. "So I said goodnight."
  15. )

而我们也可以利用字符串*的方法使得调试输出的参数数目可变

例如

  1. #num为需要调试的参数的数目
  2. num = 5
  3. formatter = "%r " * num
  4. print formatter % (
  5. "one", "two", "three"
  6. ,"four", "five"
  7. )

3. 一个print 语句 执行后默认会换行,在print后面加上逗号,可以使得print不进行换行

例如

  1. #这两据print将会输出到同一行
  2. #将第一个print后面的逗号去掉后,将会换行
  3. print "And everywhere that Marry went.",
  4. print "I'm here."

4.字符串之间的+操作起到连接字符串的作用

例如

  1. end1 = "C"
  2. end2 = "h"
  3. end3 = "e"
  4. end4 = "e"
  5. end5 = "s"
  6. end6 = "e"
  7. end7 = "B"
  8. end8 = "u"
  9. end9 = "r"
  10. end10 = "g"
  11. end11 = "e"
  12. end12 = "r"
  13.  
  14. #watch that comma at the end. try removing it to see what happens
  15. print end1 + end2 + end3 + end4 + end5 + end6,
  16. print end7 + end8 + end9 + end10 + end11 + end12

5.字符串的*一个数字n,表示将该字符串连续输出n遍

例如

  1. #下面两行的行为等价,都是在一行中连续输出10个你好
  2. print 10 * "你好"
  3. print "你好" * 10

6.很长的字符串可以用三个双引号开头,跨行写,并以三个双引号结尾

例如

  1. # python 2
  2. # 输出跨行的很长的字符串
  3. print """
  4. There's somthing going on here.
  5. With the three double-quotes.
  6. We'll be able to type as mych as we like.
  7. Even 4 lines if we want, or 5, or 6
  8. """

同时,需要注意的是,在""" 之间 """的内容的换行和我们的输入换行是一样的,下面的例子说明了这一点

例如

  1. # python 2
  2. # 在三个双引号之间的多行文本,在输出
  3. #的换行中,与文本本身的换行一致,不需要专门写\n
  4. #例如下面例子中前几行和最后一行写了\n的换行是等效的
  5.  
  6. fat_cat = """
  7. I'll do a list:
  8. \t* Cat food
  9. \t* Fishies
  10. \t* Catnip\n\t* Grass
  11. """
  12. print fat_cat

7.\r是回车符,用于将光标置于行首,将print后面加上逗号,即可以将所有的回车连起来,这样可以起到在一行不断刷新输出的效果

例如

  1. # 一个有趣的代码实验,%r是回车,用于回到行首
  2. # 因此%r可以用于刷新符号的代码
  3. while True:
  4. for i in ["/","-","|","\\","\""]:
  5. print "%s\r" % i, #注意行尾的逗号,保证了输入在同一行

python formatters 与字符串 小结 (python 2)的更多相关文章

  1. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  2. 9.9 Python 文档字符串

    9.9 Python 文档字符串. 进入 Python 标准库所在的目录. 检查每个 .py 文件看是否有__doc__ 字符串, 如果有, 对其格式进行适当的整理归类. 你的程序执行完毕后, 应该会 ...

  3. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  4. python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

    1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fal ...

  5. Python 遗传算法实现字符串

    Python 遗传算法实现字符串 流程 1. 初始化 2. 适应度函数 3. 选择 4. 交叉 5. 变异 适应度函数计算方法 计算个体间的差:分别计算每个元素与目标元素的差取平方和 种群:计算总体均 ...

  6. python- 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

    1.双层装饰器 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fa ...

  7. python 3 学习字符串和编码

    字符串和编码 阅读: 895464 字符编码 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字 ...

  8. python --- 字符编码学习小结(二)

    距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...

  9. Python基础之字符串和编码

    字符串和编码 字符串也是一种数据类型,但是字符串比较特殊的是还有个编码问题. 因为计算机自能处理数字,如果徐娅处理文本,就必须先把文本转换为数字才能处理,最早的计算机子设计时候采用8个比特(bit)作 ...

随机推荐

  1. NOIP临考经验【转】

    NOIP临考经验 1.提前15分钟入场,此时静坐调整心态,适当的深呼吸 2.打开编辑器并调整为自己喜欢的界面 3.熟悉文件目录,写好准确无误的代码模板 4.压缩包或许还不能解压,但是文件名已经可以知道 ...

  2. LeetCode -- 3SumCloset

    Question: Given an array S of n integers, find three integers in S such that the sum is closest to a ...

  3. Robot POJ - 1376

    The Robot Moving Institute is using a robot in their local store to transport different items. Of co ...

  4. hbase集群写不进去数据的问题追踪过程

    hbase从集群中有8台regionserver服务器,已稳定运行了5个多月,8月15号,发现集群中4个datanode进程死了,经查原因是内存 outofMemory了(因为这几台机器上部署了spa ...

  5. pip 使用国内源

    常用国内的pip源如下:阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple ...

  6. 7月16号day8总结

    今天学习过程和小结 1.列举Linux常用命令 shutdown now Linux关机 rebot重启 mkdir mkdir -p递归创建 vi/touth filename rm -r file ...

  7. 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 ...

  8. es6+最佳入门实践(14)

    14.模版字符串 模版字符串(template string)是增强版的字符串,定义一个模版字符串需要用到反引号 let s = `这是一个模版字符串` console.log(s) 14.1.模版字 ...

  9. vue相对路径修改

    如果静态文件不是部署在网站根目录下,vue-cli将给你造成巨大的麻烦. 你不能直接把build好的文件抛进一个目录.你不能直接在本地打开用vue做好的静态网站. 改成相对路径,主要需要做两步. 1. ...

  10. 设计模式功能概述(Design Patterns)

    1.Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2.Adapter:将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于 ...