有什么问题欢迎大家加QQ群:565712652进行讨论!

python中的字符串的格式化

Python Jason zhou 2975℃

字符串格式化用于解决字符串和变量同时输出时的格式安排。Python中有str.format(),format()和%三种格式控制的方法,但主要采用str.format()方法进行字符串的格式化。

一,str.format()方法

str.format()方法的基本使用格式:

<模板字符串>.format(<由逗号分隔的参数>)

其中模板字符串是由一系列的槽({})组成,用来控制修改字符串中嵌入值出现的位置,基本思路:将str.format()方法中逗号分隔的参数按照序号关系替换到模板字符串的槽中,槽用大括号({})来表示,如果大括号中没有序号,则按照出现顺序替换。

>>> "{}博客".format("志颖")
'志颖博客'
>>> "{2}博客 专注于{3}和{1}{0}".format("前端", "web", "志颖", "Python爬虫")
'志颖博客 专注于Python爬虫和web前端'

注意:序号是从0开始,而不是1。

槽的内部格式:

{<参数序号>:<格式控制标记>}

格式控制标记是用来控制参数显示时的格式,它的格式:

: <填充>    <对齐>    <宽度>    <,>    <.精度>    <类型>   
::引导符号
<填充>:用于填充的单个字符
<对齐>:<左对齐,>右对齐,^居中
<宽度>:槽的设定输出宽度
<,>:英文状态下的逗号,数字的千分位分隔符,适用于整数和浮点数
<.精度>:浮点数小数部分的精度
<类型>:整数类型b,c,d,o,x,X,浮点数类型e,E,f,%

下面来看几个例子:

>>> s = "志颖博客"
>>> "{0:10}".format(s)    # 默认左对齐
'志颖博客      '
>>> "{0:*^20}".format(s)    # 居中对齐,*填充
'********志颖博客********'

<.精度>有两个含义,由小数开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。带有小数点的数字(类型里未用f标识带有小数点的数字),精度表示保留几位有效数字。

>>> '{:.3}'.format(9.0807776)
'9.08'
>>> '{:.3f}'.format(9.0807776)
'9.081'
>>> '{:.3}'.format('9.0807776')
'9.0'

<类型>表示输出整数和浮点数类型的格式规则。

整数类型输出格式有6种:

  1. b:输出整数的二进制形式。
  2. c:输出整数对应的Unicode字符。
  3. d:输出整数的十进制形式。
  4. o:输出整数的八进制形式。
  5. x:输出整数的小写十六进制形式。
  6. X:输出整数的大写十六进制形式。

浮点数类型输出格式有4种:

  1. e:输出浮点数对应的小写字母e的指数形式。
  2. E:输出浮点数对应的小写字母e的指数形式。
  3. f:输出浮点数的标准浮点形式。
  4. %:输出浮点数的百分形式。

二,format方法

在控制台利用help命令查看一下它的帮助文档。

>>> help(format)
Help on built-in function format in module builtins:
format(value, format_spec='', /)
    Return value.__format__(format_spec)
    
    format_spec defaults to the empty string

format()方法和str.format()方法用法差不多,只不过,format()方法中槽的内部只有格式控制标记,没有参数序号和引导符号。其中value是需要输出的字符串,format_spec是格式控制标记。

>>> format('aksfhakefhk','<20')
'aksfhakefhk         '
>>> format('aksfhakefhk',':<20') 
'aksfhakefhk:::::::::' 
>>> format('lfajlajl', '*>30')    # 右对齐,填充*
'**********************lfajlajl'
>>> a = 9.000778468
>>> format(a, '.4f')
'9.0008'

三,%方法

%方法类似于C语言中的格式化控制符,%s表示格式化为字符串,%d表示格式化为数字。

>>> print('%s专注于Python爬虫和web前端'%'志颖博客')
志颖博客专注于Python爬虫和web前端
>>> print('今天是%d年%d月%d日'%(2018,10,11))
今天是2018年10月11日

这三种方法虽然都能起格式化字符串的作用,但我还是推荐使用第一种方法。

转载请注明:志颖博客 » python中的字符串的格式化

喜欢 (3)or分享 (0)