美文网首页
Python format

Python format

作者: 大雄good | 来源:发表于2018-02-18 20:54 被阅读0次

format使用

最近公司推崇测试和开发不分家,测试也需要将脚本写得更加鲁棒性,更好维护,一位测试的同事没怎么写过python,来问我一个问题:

def demo(a, b, c, d):
    print("\
    This is a's name: %s\n\
    Please change  b's name: %s\n\
    This is c's name: %s\n\
    This is d's name: %s\n" %(a, b, c, d))
demo("a", "b", "c", "d")

这样一个函数如何更好维护(看来测试美眉也是很爱学习的嘛😝,实际上该函数有十多个参数用于构建该字符串),我思考了一下,想到可以用format来优化一下代码:

def demo(a, b, c, d):
    command = "\n".join([
        "This is a's name:{a}".format(a=a),
        "Please change b's name: {b}".format(b=b),
        "This is c's name: {c}".format(c=c),
        "This is d's name: {d}".format(d=d),
    ])
    print(command)
demo("apple", "banana", "candy", "dog")

测试美眉看到重构之后的效果表示非常开心地走开了。但是她走之后,我想难道这样format就被她掌握了,岂不是太小瞧format了,于是又重新研究了一波format,简单整理了一下。

参数传递方式

默认方式:默认方式就是将format后的参数依次插入到字符串相应位置

>>> "a:{},b:{}".format("apple","banana")
'a:apple,b:banana'

索引方式:索引就是利用字符串中的{index}对应format中的参数,分别插入到字符串相应位置:

>>> "a:{1},b:{0}".format("apple","banana")
'a:banana,b:apple'
>>> "a:{0},b:{1}".format("apple","banana")
'a:apple,b:banana'
>>> "a:{0[1]},b:{1}".format(["apple","apple2"],"banana")
'a:apple2,b:banana'

key-value:类似函数传参方式:

>>> "a:{b},b:{a}".format(a="apple", b="banana")
'a:banana,b:apple'
>>> "a:{a},b:{b}".format(a="apple", b="banana")
'a:apple,b:banana'

填充方法:下面分别是左对齐、中间对齐和右对齐三种方式,具体格式是:[填充字符][对齐方式 <^>][宽度]

>>> "left:{a:*<10}, mid:{a:*^10}, right:{a:*>10}".format(a="5")
'left:5*********, mid:****5*****, right:*********5'

当然format同样支持格式化输出:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
fill        ::=  <any character>
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

整数输出类型

字符 含义
b 以二进制格式输出
c 将整数转换成对应的 unicode 字符
d 以十进制输出(默认选项)
o 以八进制输出
x 以十六进制小写输出
X 以十六进制大写输出
n 与 d 相同,但使用当前环境的分隔符来分隔每3位数字

十进制浮点数输出类型

字符 含义
e 指数标记;使用科学计数法输出,用e来表示指数部分,默认 precision 为6
E 与 e 相同,但使用大写 E 来表示指数部分
f 以定点形式输出数值,默认 precision 为6
F 与 f 相同,转换nanNANinfINF
g 通用格式;对于给定的 precision p >= 1,取数值的p位有效数字,并以定点或科学计数法输出(默认选项)
G 通用格式;与 g 相同,当数值过大时使用 E 来表示指数部分
n 与 g 相同,但使用当前环境的分隔符来分隔每3位数字
% 百分比标记;使用百分比的形式输出数值,同时设定 f 标记
>>> "a:{a:.2f},b:{a:.3%},c:{a:*<10.3f},d:{a:.4e}".format(a=12.333333)
'a:12.33,b:1233.333%,c:12.333****,d:1.2333e+01'

小结

format还是非常强大的,还具有替换功能,这里没有列出来。

相关文章

  • python: str-format

    在 python 中,有三种 string format: %-format, {}-format, $-form...

  • formal详细使用

    Python之format详解

  • Python - strftime

    Python Time strftime()方法 Time.strftime(format[,t]) python...

  • Python format

    format使用 最近公司推崇测试和开发不分家,测试也需要将脚本写得更加鲁棒性,更好维护,一位测试的同事没怎么写过...

  • Python format

    Python 2.6+中,format()是一个非常强大的函数,可以帮助我们填充、格式化字符串。 语法 字符串中,...

  • python——format

    format 输出:小明 喜欢 唱歌 跳舞 输出:小明 喜欢 唱歌 跳舞 输出:小明 喜欢 唱歌 跳舞 Synta...

  • Flow Control

    PYTHON IS A SPACE SENSITIVE LANGUAGE, PLEASE FORMAT YOUR ...

  • format() 格式化函数

    Python format 格式化函数 | 菜鸟教程

  • format()函数

    python中format函数用于字符串的格式化 通过关键字 通过位置 format()方法格式控制 format...

  • python format 函数总结

    python format 函数总结 文章基于Python2.7.12进行讲述: 未完待续。。。。。。

网友评论

      本文标题:Python format

      本文链接:https://www.haomeiwen.com/subject/jzbbtftx.html