专栏首页python3python str.format知识点

python str.format知识点

在Python3.6.5版本测试通过

语法 str.format(*args, **kwargs)

它通过{}和:来代替%。

"映射”示例:

1.通过位置

In [1]: '{0},{1}'.format('kzc',18)
Out[1]: 'kzc,18'
In [2]: '{},{}'.format('kzc',18)
Out[2]: 'kzc,18'
In [3]: '{1},{0},{1}'.format('kzc',18)
Out[3]: '18,kzc,18'

2.通过关键字参数

 In[5]:'{name},{age}'.format(age=18,name='kzc')
Out[5]: 'kzc,18'

          或字典方式

In [9]: dic={'name':'ytjoh','age':48}
   ...: '{name},{age}'.format(**dic)
Out[9]: 'ytjoh,48'

list和tuple可以通过“打散”成普通参数给函数(使用*),而dict可以打散成关键字参数给函数(**)。所以可以轻松的传个list/tuple/dict给format函数。

3.通过对象属性

In [28]: class Person:
    ...:   def __init__(self,name,age):
    ...:     self.name,self.age = name,age
    ...:   def __str__(self):
    ...:     return 'This guy is {self.name},is {self.age} old'.format(self=self)

In [29]: str(Person('ytjoh',48))
Out[29]: 'This guy is ytjoh,is 48 old'

4.通过下标

In [30]: p=['ytjoh',48]
    ...: '{0[0]},{0[1]}'.format(p)
Out[30]: 'ytjoh,48'
In [40]: dic={'name':'ytjoh','age':48}    
    ...: '{d[name]},{d[age]}'.format(d=dic)
Out[40]: 'ytjoh,48'

5.用%s和%r替换

In [35]: "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
Out[35]: "repr() shows quotes: 'test1'; str() doesn't: test2"

格式限定符(format_spec)

它有着丰富的的“格式限定符”(语法是{}中带:号),比如:

填充与对齐

填充常跟对齐一起使用

^、<、>分别是居中、左对齐、右对齐,后面带宽度

:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

比如

In [31]: '{:>8}'.format('ytjoh')
Out[31]: '   ytjoh'

format_spec详解

在这里,我们重点看一下格式描述(format_spec)这一项。

格式描述中含有6个选项,分别是 fill、align、sign、width、precision、type。 它们的位置关系如下:

[[fill]align][sign][#][0][width][,][.precision][type] fill 可以是任意字符,默认为空格。

align 仅当指定最小宽度时有效。

< 左对齐(默认选项) > 右对齐 = 仅对数字有效;将填充字符放到符号与数字间,例如 +0001234 ^ 居中对齐

sign 仅对数字有效

+ 所有数字均带有符号 - 仅负数带有符号(默认选项)  即空格;正数前面带空格,负数前面带符号

'#'  只对整数有效

      自动在二进制、八进制、十六进制数值前添加对应的 0b、0o、 0x。

','  自动在每三个数字之间添加 , 分隔符。

width  十进制数字,定义最小宽度。如果未指定,则由内容的宽度来决定。

      如果没有指定对齐方式(align),那么可以在 width 前面添加一个0来实现自动填充0,等价于 fill 设为 0 并且 align 设为 =。

precision  用于确定浮点数的精度,或字符串的最大长度。不可用于整型数值。

type   确定参数类型,默认为 s ,即字符串。

整数输出类型:

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

十进制浮点数输出类型:

e:指数标记;使用科学计数法输出,用e来表示指数部分,默认 precision 为6 E:与 e 相同,但使用大写 E 来表示指数部分 f:以定点形式输出数值,默认 precision 为6 F:与 f 相同 g:通用格式;对于给定的 precision p >= 1,取数值的p位有效数字,并以定点或科学计数法输出(默认选项) G:通用格式;与 g 相同,当数值过大时使用 E 来表示指数部分 n:与 g 相同,但使用当前环境的分隔符来分隔每3位数字 %:百分比标记;使用百分比的形式输出数值,同时设定 f 标记

相关函数:format : 内置函数

         用法:format(value[, format_spec])

本函数把值value按format_spec的格式来格式化,然而函数解释format_spec是根据value的类型来决定的,不同的类型有不同的格式化解释。当参数format_spec为空时,本函数等同于函数str(value)的方式。

其实本函数调用时,是把format(value, format_spec)的方式转换为type(value).__format__(format_spec)方式来调用,因此在value类型里就查找方法__format__(),如果找不到此方法,就会返回异常TypeError

In [36]: print('aaaa'.__format__('?>20'))
????????????????aaaa

In [36]: 

In [37]: format('aaaa','?>20')
Out[37]: '????????????????aaaa'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python format函数

    在Python 3.0中,%操作符通过一个更强的格式化方法format()进行了增强。对str.format()的支持已经被反向移植到了Python 2.6 ...

    py3study
  • python字符串格式化输出

    python中有两种格式化输出字符串的方式:格式化表达式、format()方法。当然,还有一个简化操作的内置format()函数。

    py3study
  • python自动处理数据生成报表

    workbook = xlsxwriter.Workbook('chart.xlsx')     #创建一个Excel文件

    py3study
  • Python 字符串格式化操作 - format方法

    字符串操作 对于 %, 官方以及给出这种格式化操作已经过时,在 Python 的未来版本中可能会消失。 在新代码中使用新的字符串格式。因此推荐大家使用forma...

    叉叉敌
  • Python 字符串格式化操作 - format方法

    字符串操作 对于 %, 官方以及给出这种格式化操作已经过时,在 Python 的未来版本中可能会消失。 在新代码中使用新的字符串格式。因此推荐大家使用forma...

    叉叉敌
  • SAS-100种关于format的用法,你在用哪种?

    前几天,看到有人问到SAS中关于format的一些问题,最近小编用format也用的比较多,所以啊,今天小编要分享的是SAS中关于format的应用,forma...

    Setup
  • python字符串格式化输出

    python中有两种格式化输出字符串的方式:格式化表达式、format()方法。当然,还有一个简化操作的内置format()函数。

    py3study
  • 【介绍一些好用的轮子(1)】类型安全的字符串格式化输出

    学过 C 语言的同学可能对 printf 都不陌生,也对用 "%d" 这种格式控制符对应于打印一个 int 也不陌生。然而这种打印方式是被 C++ 唾弃的,于是...

    JIFF
  • python格式化输出之format用法

    相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘...

    于小勇
  • 【Rust日报】2020-01-25 Rust 2020 路线图,typed-builder,format!

    typed-builder,创建经过编译时验证的构建器,发布了v0.5.0版本。示例:

    MikeLoveRust

扫码关注云+社区

领取腾讯云代金券