format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点。 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序可以不相同 3.填充方式十分灵活,对齐方式十分强大 4.官方推荐用的方式,%方式将会在后面的版本被淘汰 format的一个例子 - print
-
- 'hello {0}'
- .
- format
- (
- 'world'
- )
复制代码会输出hello world format的格式 replacement_field ::= “{” [field_name] [“!” conversion] [“:” format_spec] “}”
field_name ::= arg_name (“.” attribute_name | “[” element_index “]”)*
arg_name ::= [identifier | integer]
attribute_name ::= identifier
element_index ::= integer | index_string
index_string ::= <any source character except “]”> +
conversion ::= “r” | “s” | “a”
format_spec ::= <described in the next section>
format_spec 的格式
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” | “%”
应用: 一 填充 1.通过位置来填充字符串 - print
-
- 'hello {0} i am {1}'
- .
- format
- (
- 'Kevin'
- ,
- 'Tom'
- )
-
- # hello Kevin i am Tom
-
-
-
-
- print
-
- 'hello {} i am {}'
- .
- format
- (
- 'Kevin'
- ,
- 'Tom'
- )
-
- # hello Kevin i am Tom
-
-
-
-
- print
-
- 'hello {0} i am {1} . my name is {0}'
- .
- format
- (
- 'Kevin'
- ,
- 'Tom'
- )
-
- # hello Kevin i am Tom . my name is Kevin
复制代码foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 …… 也可以不输入数字,这样也会按顺序来填充 同一个参数可以填充多次,这个是format比%先进的地方 2.通过key来填充 - print
-
- 'hello {name1} i am {name2}'
- .
- format
- (
- name1
- =
- 'Kevin'
- ,
- name2
- =
- 'Tom'
- )
-
- # hello Kevin i am Tom
复制代码3.通过下标填充 - names
- =
- [
- 'Kevin'
- ,
- 'Tom'
- ]
-
-
-
-
- print
-
- 'hello {names[0]} i am {names[1]}'
- .
- format
- (
- names
- =
- names
- )
-
- # hello Kevin i am Tom
-
-
-
-
- print
-
- 'hello {0[0]} i am {0[1]}'
- .
- format
- (
- names
- )
-
- # hello Kevin i am Tom
-
复制代码4.通过字典的key - names
- =
- {
- 'name'
- :
- 'Kevin'
- ,
- 'name2'
- :
- 'Tom'
- }
-
-
- print
-
- 'hello {names[name]} i am {names[name2]}'
- .
- format
- (
- names
- =
- names
- )
-
- # hello Kevin i am Tom
复制代码注意访问字典的key,不用引号的 5.通过对象的属性 - class
-
- Names
- (
- )
- :
-
-
-
-
-
- name1
- =
- 'Kevin'
-
-
-
-
-
- name2
- =
- 'Tom'
-
-
-
-
-
-
-
-
- print
-
- 'hello {names.name1} i am {names.name2}'
- .
- format
- (
- names
- =
- Names
- )
-
- # hello Kevin i am Tom
复制代码6.使用魔法参数 - args
- =
- [
- 'lu'
- ]
-
-
- kwargs
-
- =
-
- {
- 'name1'
- :
-
- 'Kevin'
- ,
-
- 'name2'
- :
-
- 'Tom'
- }
-
-
- print
-
- 'hello {name1} {} i am {name2}'
- .
- format
- (
- *
- args
- ,
-
- *
- *
- kwargs
- )
-
- # hello Kevin i am Tom
复制代码
|