普通格式化方法

  1. (%s%d)生成格式化的字符串,其中s是一个格式化字符串,d是一个十进制数;

  2. 格式化字符串包含两部分:普通的字符和转换说明符(见下表),

    将使用元组或映射中元素的字符串来替换转换说明符;

    **如果d是元组的话,必须与s中的转换说明符个数一致; 
    如果d是dict的话,每个转换说明符都必须与dict中一个有效的键名相关联.**

转换说明符,都以%开始 输出格式
d,i 十进制
u 无符号数
o 八进制
x 十六进制或长整数
X 十六进制
f,e,E 浮点数
g,G 指数小于-4时使用
s 字符串或者任意对象,同str生成的字符串
r 同repr生成的字符串

3. 在%字符和转换字符之间,可以出现以下修饰符,并且只能按照以下顺序出现,

  1. 位于括号中的一个键名,用于从dict中获取这个key对应的值,如果不存在key,则引发异常;
  2. 下面中的一个或者多个: 
    • -,左对齐标志,默认为右对齐;
    • +,表示应该包含数字的正负号;
    • 0,表示用0来填充;
  3. 指定最小自动宽度的数字.转换后的值将被打印在至少为这个宽度的字符串中,并且在左边填充空格至满字段宽(如果指定了-标志,则在右边填充);(如果字符串本身的长度大于指定宽度,则这个宽度就没用啦).
  4. 一个小数点,用于按照精度分割字段宽度;
  5. 一个数字,指定要打印字符串中最大字符个数,浮点数中小数点之后的位数或整数的最小位数;
  6. *用于任意宽度的字段中替换数字.如果存在,宽度将从元组的下一项开始读取;(有点晕啊- -,结合下面代码看就容易理解了)


    #!/usr/bin/python # -*- coding: utf-8 -*- #1 a = {"name":'ljs',"age":22,'weight':75}
    print "%(name)s %(age)d %(weight)d;"%a #ljs 22 75; #将已经定义的变量扩展到字符串中 name = 'ljs'
    age = 22
    weight = 75
    r = "%(name)s %(age)d %(weight)d;"%vars()
    print r #ljs 22 75;
    print vars() #vars()函数包含一个此时已定义的所有变量的字典 #2 and 3 a = 'abc'
    b = 100
    c = -100
    print "%d"%(a,b) #error
    print "%10s ;"%a # abc ;最小宽度为10,宽度不足10,默认为右对齐,向左补充空格直至宽度为10
    print "%-10s ;"%a #abc ;最小宽度为10,宽度不足10,-为左对齐标志,向右补充空格直至宽度为10
    print "%+10s ;"%a # abc ;字符串没有符号,so 标志+ 不起作用
    print "%010s ;"%a # abc ;不是数字,不用填充0,所以标志0不起作用
    print "%10d ;"%b # 100 ;最小宽度为10,宽度不足10,默认为右对齐,向左补充空格直至宽度为10
    print "%-10d ;"%b #100 ;最小宽度为10,宽度不足10,-为左对齐标志,向右补充空格直至宽度为10
    print "%+10d ;"%b # +100 ;打印出符号
    print "%+10d ;"%c # -100 ;打印出符号
    print "%+010d ;"%b #+000000100 ;填充0至宽度为10 #4 5 a = 1.23456
    print "%f"%a #1.234560;正常打印
    print "%3f"%a #1.234560;最小宽度为3,但是长度已经超过了3,so正常打印
    print "%10f"%a # 1.234560;最小宽度为10,宽度不足10,默认为右对齐,向左补充空格直至宽度为10
    print "%.3f"%a #1.235;小数点后的数字为精度,小数点后保留3位
    print "%.10f"%a #1.2345600000;小数点后位数不足10,补0至位数为10 #6 a = 123456.7890123456
    print "%*.*f;"%(15,5,a) # 123456.78901;第一个*为最小宽度,第二个*为小数点后面的精度
    print "%-*.*f;"%(15,5,a)#123456.78901 ;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

高级字符串格式化

  1. 字符串的format()函数,该方法收集位置参数和关键字参数的任意集合,并使用它们的值来替换字符串中的占位符;

  2. 形式为{n}(n为整数)的占位符将被format()方法第n个参数所代替;

    形式为{name}的占位符将被参数中为name的参数所替代;

    如果要用format()输出{xx},必须使用{{xx}},否则会因为找不到对应的参数值而报错;

  3. 可以指定格式说明符,对输出进行更加精确地控制.

    给每个占位符添加可选的格式说明符号,如{name:format_spec}.这种说明符可指定列宽,小数位和对齐方式.

    一般格式[fill,align,sign,0,width,.precision,type],每一处都是可选的.

    • fill:是一个可选的填充字符,用于填充空白,默认为空格;
    • align,对齐方式.<,>,^分别代表左,右,居中对齐,默认为右对齐;
    • sign,取值为: 
      1. +,所有数字签名都要加上符号;
      2. -,默认值,只在负数签名加符号;
      3. 空格,在正数前面加上一个空格;
    • 0,在宽度前面加0表示用0来填充数值前面的空白;
    • width,宽度;
    • .precision,精度的位数;
    • type,数据类型,如d(整数),s(字符串)等
  4. 某些情况下,可能只是要格式化对象的str()或repr()表示,需要绕过__format__()方法.为此,可以在格式说明符前面添加!r或!s说明符,如果不懂见下面代码.

#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
help(str.format)
Help on method_descriptor: format(...)
S.format(*args, **kwargs) -> string Return a formatted version of S, using substitutions from args and kwargs.
The substitutions are identified by braces ('{' and '}').
'''
print "{{a}}".format() #{a}
print "{a}".format() #error,里面没有为a的参数
print "{a} - {b}".format(a = 100,b = 200)#100 - 200
print "{0},{0}".format(11,22) #11,11
print "{0},{0},{1},{2}".format(11,22,33) # 11,11,22,33 中括号里面的数代表第几个参数
print "{0:3d},{1:4s},{1:5s},{2}".format(11,"a",33) # ' 11,a ,a ,33' print "{0:=>+011.3f};".format(12.12345) #====+12.123;用=来填充,右对齐,因为已经用=来填充了,0无效,宽度11,小数点精度后精度为3,类型为浮点数
print "{0:>+011.3f};".format(12.12345) #0000+12.123; a = "test"
print "{0:^10}".format(a) #test
print "{0!s:^10}".format(a) #test
print "{0!r:^10}".format(a) #'test' #通过下标也行
a=[1,2]
print '{0[0]},{0[1]}'.format(a) #1,2 #对象属性
class Test(object):
def __init__(self,name,age):
self.name,self.age = name,age def __str__(self):
return 'This boy is {self.name},is {self.age} old'.format(self=self) def str(self):
return self.__str__()
a = Test('lilei',12)
print str(a) #This boy is lilei,is 12 old
print a.str() #This boy is lilei,is 12 old #format函数单独使用
format('abc',"10s") #'abc '
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

总而言之,将format()里面的参数视为一个正常的参数,这个对象该有的属性在字符串(s.format()中的 s )里面也能使用!!!

Python中的format()函数的更多相关文章

  1. Python中的format函数

    format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序 ...

  2. Python中格式化format()方法详解

    Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...

  3. python --- Python中的callable 函数

    python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...

  4. python中使用zip函数出现<zip object at 0x02A9E418>

    在Python中使用zip函数,出现<zip object at 0x02A9E418>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动 zip方 ...

  5. [转载]python中multiprocessing.pool函数介绍

    原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...

  6. Python 中的isinstance函数

    解释: Python 中的isinstance函数,isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数object是cla ...

  7. Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下   Py ...

  8. python中multiprocessing.pool函数介绍_正在拉磨_新浪博客

    python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

  9. 举例详解Python中的split()函数的使用方法

    这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下   函数:sp ...

随机推荐

  1. File的方法

    1.介绍 file 对象使用 open 函数来创建. 2.常用的方法

  2. FastAdmin 的 CRUD 不支持层级模型

    FastAdmin  的 CRUD 可以快速生成控制器,模型和前端文件. 群里有人试了这个命令: php think crud -t departmant -c auth/departmant -m ...

  3. POJ - 1266 -

    题目大意:给出一条圆弧上的两个端点A,B,和圆弧上两端点之间的一个点C,现在要用一块各个定点的坐标均为整数的矩形去覆盖这个圆弧,要求最小的矩形面积. 思路:叉积在本体发挥很强大的作用.首先求出三个点所 ...

  4. 二分搜索-poj1064

    题目大概意思是:给你N个长度的电缆,需要你编写程序 将它分割成 K 根长度相等的小电缆.而我们的目的就是要求出分割出的 最大长度 可以为多少.此处可以应用二分搜索的知识来实现查找最终长度. 代码实现 ...

  5. hystrix dashboard Unable to connect to Command Metric Stream解决办法

    spring cloud 在初次使用 hystrix dashboard仪表盘的时候很容易出现hystrix dashboard Unable to connect to Command Metric ...

  6. linux golang开发环境配置(离线方式)

    <获取开发工具>     到https://www.golangtc.com/download 下载安装包, 根据自己的系统选择合适的开发包,这里选择go.1.9.2.linux-amd6 ...

  7. Angularjs 根据数据结构创建动态菜单无限嵌套循环--指令版

    目标:根据数据生成动态菜单,希望可以根据判断是否有子集无限循环下去. 菜单希望的样子是这样的: 菜单数据是这样的: $scope.expanders = [{ title: 'title1', lin ...

  8. POJ.3648.Wedding(2-SAT)

    题目链接 题意看这吧..https://www.cnblogs.com/wenruo/p/5885948.html \(Solution\) 每对夫妇只能有一个坐在新娘这一边,这正符合2-SAT初始状 ...

  9. Python图形编程探索系列-06-按钮批量生产函数

    设计任务 初步设计一个批量生产按钮的函数,根据需要的按钮数量,自动生成多少按钮. 函数设计 import tkinter as tk # 导入tkinter库 root = tk.Tk() # 建立程 ...

  10. node+koa2 使用ejs模版

    1.进入项目下,npm install -save ejs 2.app.js加入: const ejs = require('ejs'); app.use(views(__dirname + '/vi ...