Python中提供了多种格式化字符串的方式,遇到一个项目,在一个文件中,就用了至少两种方式。特别是在使用Log时,更让人迷惑。

因此特地花时间来了解一下Python中字符串格式化的几种方式:

  1. # -*- coding: utf-8 -*-
  2.  
  3. import unittest
  4. class StringFormatTests(unittest.TestCase):
  5. def test_C_style(self):
  6. """
  7. % 是老风格的字符串格式化方式, 也称为C语言风格,语法如下:
  8. %[(name)][flags][width].[precision]type
  9. name: 是占位符名称
  10. flags: 可取值有:
  11. - 左对齐(默认右对齐)
  12. 0 表示使用0填充(默认填充是空格)
  13. width: 表示显示宽度
  14. precision:表示精度,即小数点后面的位数
  15. type:
  16. %s string,采用str()显示
  17. %r string,采用repr()显示
  18. %c char
  19. %b 二进制整数
  20. %d, %i 十进制整数
  21. %o 八进制整数
  22. %x 十六进制整数
  23. %e 指数
  24. %E 指数
  25. %f, %F 浮点数
  26. %% 代表字符‘%’
  27.  
  28. 注意,如果内容中包括%,需要使用%%来替换
  29. :return:
  30. """
  31. # 测试 flag 与 width
  32. print("%-10x" % 20)
  33. print("%-10x" % 20)
  34. print("%10x" % 20)
  35. print("%010x" % 20)
  36.  
  37. # 测试 name的用法:
  38. print("hello, %s, my name is %s, age is %d" % ("lucy", "zhangsan", 20))
  39. print("hello, %(yname)s, my name is %(myname)s, age is %(myage)d" % {"yname":"lucy", "myname":"zhangsan", "myage":20})
  40.  
  41. def test_new_style_format(self):
  42. """
  43. string.format() 提供了新风格的格式化, 语法格式:{:format_spec}
  44. format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
  45. fill ::= <any character>
  46. align ::= "<" | ">" | "=" | "^" 对齐方式,分别是左、右、两边、中间对齐
  47. sign ::= "+" | "-" | " "
  48. width ::= integer
  49. precision ::= integer
  50. type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" ,默认值是 "s"
  51.  
  52. 详情参见:https://docs.python.org/2/library/string.html
  53.  
  54. 因为{}要作为格式化的标志位,所以内容尽量不要使用'{'或'}'
  55. 另外,可以使用索引
  56.  
  57. 相比而言,新风格的比老风格的强大太多了。
  58.  
  59. :return:
  60. """
  61. print('hello, {0}, {2}, {1}'.format('a', 'b', 'c'))
  62.  
  63. def test_template(self):
  64. """这种风格的,可以看作是类似于Linux变量风格的
  65. ${var}
  66. $var
  67. $$ 代表单个字符 '$'
  68. """
  69. from string import Template
  70. s = Template('$who likes $what')
  71. print(s.substitute(who='tim', what='kung pao'))
  72. pass
  73.  
  74. if __name__ =="main":
  75. unittest.main()

Python:字符串格式化的更多相关文章

  1. Python 字符串格式化

    Python 字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存 一 ...

  2. python字符串格式化 %操作符 {}操作符---总结

    Python字符串格式化 (%占位操作符) 在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输入输出.Python中内置有对字符串进行格式化的操作 %. 模板 格式化字 ...

  3. 【转】Python字符串格式化

    Python 支持格式化字符串的输出 .尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中. 在 Python 中,字符串格式化使用与 C 中 sp ...

  4. 7. python 字符串格式化方法(2)

    7. python 字符串格式化方法(2) 紧接着上一章节,这一章节我们聊聊怎样添加具体格式化 就是指定替换字段的大小.对齐方式和特定的类型编码,结构如下: {fieldname!conversion ...

  5. 7. python 字符串格式化方法(1)

    7. python 字符串格式化方法(1) 承接上一章节,我们这一节来说说字符串格式化的另一种方法,就是调用format() >>> template='{0},{1} and {2 ...

  6. 6. python 字符串格式化表达式

    6. python 字符串格式化表达式 字符串格式化允许在一个单个的步骤中对一个字符串执行多个特定类型的替换 特别是给用户提示的时候,格式化非常方便 实现方法: 1.格式化表达式,类似于c语言的pri ...

  7. python字符串格式化--dict传参

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python字符串格式化--dict传参 print "I'm %(name)s. I'm %(a ...

  8. Python学习:12.Python字符串格式化

    字符串格式化 讲解Python这么久,也没有讲解Python的字符串的格式化,那我们今天就来了解一下python字符串格式化的强大之处. 首先我们先理解一下为什么要有字符串的格式化,就是为了方便字符串 ...

  9. Python字符串格式化

    一.使用格式化符来格式化字符串: Python支持的所有格式化符 格式化符 意义 'd' 返回要格式化对象的十进制表示,如果可以 'i' 返回要格式化对象的十进制表示,如果可以 'o' 返回要格式化对 ...

  10. python字符串格式化方法 format函数的使用

      python从2.6开始支持format,新的更加容易读懂的字符串格式化方法, 从原来的% 模式变成新的可读性更强的 花括号声明{}.用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序 ...

随机推荐

  1. 【前端框架系列】浅谈当前基于bootstrap框架的几种主流前端框架

    一  概述 当新开发一个项目或产品时,技术选型是一个不可缺少的环节,在软件架构中有着举足轻重的作用,可以这么说,技术选型的好坏直接影响项目或产品的成败优劣,因此,在进行软件架构时,一定要想好技术选型. ...

  2. [转]在nodejs使用Redis缓存和查询数据及Session持久化(Express)

    本文转自:https://blog.csdn.net/wellway/article/details/76176760 在之前的这篇文章 在ExpressJS(NodeJS)中设置二级域名跨域共享Co ...

  3. camera测试之颜色还原

    测试目的:camera对色彩的还原能力 测试主要设备:24色色卡,灯箱 测试环境:1.D65/CW/A光源,照度为600±100lux,整个chart表面的亮度值相差小于10% 2.D65光源,照度为 ...

  4. 结构型---代理模式(Proxy Pattern)

    代理模式的详细介绍 代理模式按照使用目的可以分为以下几种: 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象.这个不同的地址空间可以是本电脑中,也可以在另一台电脑中.最典型 ...

  5. C#中struct和class的区别详解

    本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建 ...

  6. log4.net 自定义日志文件名称

    插件化项目中,遇到这样一个需求,每个插件 或者每个方法 一个日志文件,方便后期错误排查 源码地址: https://github.com/xlb378917466/SharpHttpServerCas ...

  7. Runnable和Callable接口辨析

    突然发现和启动一个线程有关的有三函数,run(), call(), start(),有点小乱,所以特别梳理一下 首先说一下start(),这个是最好说的,感觉start()和run()这俩名字是真的有 ...

  8. hihoCoder编程练习赛52

    题目1 : 字符串排序 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 一般我们在对字符串排序时,都会按照字典序排序.当字符串只包含小写字母时,相当于按字母表" ...

  9. P1993 小 K 的农场

    题目描述 小 K 在 Minecraft 里面建立很多很多的农场,总共 n 个,以至于他自己都忘记了每个 农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m 个),以下列三种形式描 述: 农场 ...

  10. CentOS7 离线安装MySQL

    1.删除原有的mariadb 不然安装报错 rpm -qa|grep mariadb rpm -e --nodeps mariadb-libs 2. 下载RPM安装包 在https://dev.mys ...