用%格式化Python字符串

2019年8月11日 / 13次阅读 / Last Modified 2019年9月3日
语法

Python语法中,有一种使用%来格式化字符串的用法。这种用法,很像C语言的sprintf函数,很多参数的含义都是一样的。

我们先来举个例子,看看基本语法格式:

>>> domain = 'https://www.pynote.net'
>>> str = 'website domain is %s' % domain
>>> str
'website domain is https://www.pynote.net'
>>>
>>> str2 = 'I built %s %d days\' ago' % (domain, 100)
>>> str2
"I built https://www.pynote.net 100 days' ago"

基本语法是,在待格式化的字符串中有以%所表示的引用,而引用的具体内容,来自字符串后面的那个%符号后面的变量。如果待格式化的字符串中有多个%所表示的引用,字符串后面%后面,就是一个tuple,里面按引用顺序排列各变量。

格式化%s

%s表示一个字符串,将后面对应位置的变量插入%s的位置。这可能是最简单的%格式化了。

>>> ss = 'abc'
>>> str = 'this %s is %s, so %s.' % (ss,ss,ss)
>>> str
'this abc is abc, so abc.'

格式化%d

%d表示这里应该插入一个数字。

>>> dd = 123
>>> str = '%d' % dd
>>> str
'123'
>>> str = '%+d' % dd
>>> str
'+123'
>>> str = '%10d' % dd
>>> str
'       123'
>>> str = '%010d' % dd
>>> str
'0000000123'
>>> str = '%-10d' % dd
>>> str
'123       '

上面的代码显示了%d有一些额外的可使用的符号,用来控制把一个数字格式化如字符串后的显示效果。这些符号不言自明,不需要另外的解释了吧。。。

格式化%x和%X

%x表示将数字按照十六进制插入字符串,%X表示十六进制中的字母大写。

>>> dd
123
>>> str = '%x' % dd
>>> str
'7b'
>>> str = '0x%X' % dd
>>> str
'0x7B'
>>> str = '0x%4X' % dd
>>> str
'0x  7B'
>>> str = '0x%04X' % dd
>>> str
'0x007B'
>>> '%#x' % 32  # # used to add 0x prefix automatically 
'0x20'

我个人比较喜欢用%X,十六进制字母大写看起来更酷一点...:)

格式化%f

%f表示对一个浮点数进行字符串格式化。

>>> ff = 1.23456789
>>> str = '%f' % ff
>>> str
'1.234568'
>>> str = '%.4f' % ff  # control how long after the dot
>>> str
'1.2346'
>>> '%15f'%ff  # just like %f only with specific width
'       1.234568'
>>> '%-15f'%ff
'1.234568       '
>>> '%015f'%ff
'00000001.234568'
>>> '%15.2f'%ff  # width.fraction number
'           1.23'

上面将浮点数格式化为字符串,看起来好像是在做四舍五入,其实不是哦,关于Python实现四舍五入的详细情况,请参考这篇文章:Python实现小数四舍五入的方法

证明%f没有四舍五入的功能:

>>> ff = 2.675
>>> '%.2f' % ff
'2.67'

格式化%e和%E

%e和%E是一样的,都是将数字转换按照科学计数的方式表示的字符串。

>>> num = 12345678987654321
>>> '%e' % num
'1.234568e+16'
>>> '%20E' % num
'        1.234568E+16'
>>> '%-20e' % num
'1.234568e+16        '

格式化%c

%c表示将一个数字转化成对应的unicode字符。

>>> '%c' % 69
'E'
>>> '%c' % 70
'F'
>>> '%c' % 71
'G'
>>> '%c' % 23456
'宠'
>>> '%c' % 23457
'审'

格式化%o

%o表示将一个数组格式化成八进制表示。

>>> '%o' % 8
'10'
>>> '%o' % 16
'20'
>>> '%o' % 32
'40'
>>> '%10o' % 32
'        40'
>>> '%-10o' % 32
'40        '
>>> '%#o' % 32  # # used to add 0o prefix automatically
'0o40'

注意#这个小符号,如果是十六进制,它自动加0x,如果是八进制,它自动加0o。

好了,基本上常用的格式化符号都在上面了,如果后面遇到这里没有的,再加上去。以上就是用%格式化Python字符串的总结。Python程序使用%格式化字符串, 版本兼容性最好(f-string格式化的方式,要Python3.6开始才会有)。

-- EOF --

本文链接:https://www.pynote.net/archives/835

留言区

《用%格式化Python字符串》有1条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    %s也可以使用控制显示宽度的参数。 [回复]


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top