Python格式化字符串

liftword2个月前 (03-09)技术文章10

在 Python 中,其采用的部分格式化方式与 C 语言保持一致,通过 “%” 来实现,示例如下:

print('Hello, %s' % 'world')
print('Hi, %s, you have $%d.' % ('Michael', 1000000))

不难猜到,“%” 运算符的作用就是格式化字符串。在字符串内部,“% s” 代表用字符串进行替换,“% d” 表示用整数替换。有几个 “%?” 这样的占位符,后面就要跟数量与之对应的变量或者值,并且顺序要严格对应好。若只有一个 “%?” 占位符,那么后面括号是可以省略的。


常见的占位符及其对应的替换内容如下表所示:

占位符

替换内容

%d

整数

%f

浮点数

%s

字符串

%x

十六进制整数

对于格式化整数和浮点数,还能够指定是否补 0 以及整数与小数的位数,示例如下:

print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)

要是不太确定具体该使用哪种占位符,“% s” 永远是可行的,它可以将任何数据类型转换为字符串,例如:

print('Age: %s. Gender: %s' % (25, True))

有时候,若字符串里面的 “%” 是作为一个普通字符出现,这种情况下就需要转义,使用 “%%” 来表示一个 “%”,像下面这样:

print('growth rate: %d %%' % 7)


format () 方法

除了上述使用 “%” 的格式化方式外,还有一种格式化字符串的方法,那就是利用字符串的 format () 方法。它会按照传入参数的顺序依次替换字符串内的占位符 “{0}”“{1}”…… 不过,相比较而言,这种方式写起来要比使用 “%” 麻烦一些,示例如下:

print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125))

f-string

最后要介绍的格式化字符串的方法是使用以 “f” 开头的字符串,也就是常说的 f-string。它和普通字符串的区别在于,若字符串中包含 “{xxx}” 这样的内容,就会用对应的变量值去进行替换,示例如下:

r = 2.5
s = 3.14 * r ** 2
print(f'The area of a circle with radius {r} is {s:.2f}')

在上述代码中,“{r}” 会被变量 “r” 的值所替换,“{s:.2f}” 则被变量 “s” 的值替换,而且 “:” 后面的 “.2f” 指定了格式化参数,即要求保留两位小数,所以 “{s:.2f}” 的替换结果就是 19.62。

相关文章

Python实现整数的进制转换

任务要求将十进制整数分别转换为二进制、八进制和十六进制,并将结果在控制台打印输出。任务分析Python提供了bin()、oct()、hex()等内置函数直接完成进制转换,但输出结果包含前缀(如0b)。...

「调试」使用python与单片机进行通信

调试说明:环境:usb转ttl线一根,通信协议一份,STC系列单片机一个,电脑一台。功能:使用python发送16进制数据转换成字节流数据发给单片机,单片机返回16进制数据后转10进制(本次测试是获取...

python散装笔记——149: 从Python 2迁移到Python 3的不兼容性(六)

26: 编码/解码为十六进制不再可用Python 2.x Version ≤ 2.7"1deadbeef3".decode('hex') # Out: '\x1d\xea\xdb\xee\xf3' '...

逐浪字体大师的UNI转码之Excel将十六进制转换成十进制的方法

最近在做字体大师,一款可以快速通过网页进行字体设计,从而生成字体的开放工具,部署于v.ziti163.com,效果如下:在这里插入图片描述因为其中C#需要调用字符码,其读取的是10进制,而字体的uni...

Python 趣味编程:我的压岁钱

题目压岁钱又名压祟钱。是除夕吃完年夜饭,由长辈将事前准备好的钱分给晚辈,是过年习俗之一。今年除夕页面,小明收到了妈妈的 600 元,爸爸的 800 元,奶奶的 800 元,爷爷的 1000 元,姥姥的...

Python二进制、八进制、十进制、十六进制互转

Python二进制、八进制、十进制、十六进制互转在Python中各种进制的转换还是比较方便的,都有内置的方法二进制 bin()八进制 oct()十六进制 hex()十进制 int()通过以上4个方法就...