一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第27天,点击查看活动详情。
0 环境
- 编辑器:idea
- 系统版本:win10
- python版本:3.9.6
1 前言
之前join字符串拼接,麻烦且格式难以控制,为了美化代码,不仅人看了舒服,还要安全,字符串格式化就很有必要学一下了。
2 c-print
浓浓的c语言字符串格式化的味道,c-print继承自c语言。通过占位符来达到替换字符的效果。正常:占位符:% + 格式控制符(整数,字符串格式...),类如%s --> 格式化字符串。我定义了%s,那么替换字符以一个什么方式替换呢,或者说替换的标志是啥,在字符串后,也就是逗号后面("xxx %s xxx", xxx),追加一个百分号("xxx %s xxx", % xxx),在追加一个元组,元组里存放的就是你需要替换的字符("xxx %s xxx", % (替换字符.....)),如下,比如就一个替换字符,可以忽略元组,但是有多个替换字符,请把替换字符加在元组中,不然会报下面的错误。而且这里的%,可以避免sql恶意注入。还有一点原字符串是不会受到修改的,有返回值的,是不是有点借鸡生蛋的味道。
单个字符,可不加元组。
多替换字符不行,需要加上元组。
不能漏掉替换字符,不然会报错。(数量要一致)
还有一点,需要每个替换字符格式对应,写错格式,也是会报错的。(类型要一致)
常规写法,对了,这里占位符是%s,其实是它背地里调用了str()。还有注意一点是:(%s, % xx),假如你双百分号是会报错的。
def c_print_demo():
print("are you %s, i am %d " % ('ok', 18))
print("are you %s" % 'ok')
3 总结
这里我们c-print传自c语言,对于学过c的小伙伴有福了,也清楚了占用符和替换字符之间替换的规格,保持数量一致,格式也要匹配,多个替换字符用元组表示(用括号把多个替换字符有序放在一起,不然会报错),请对应(%格式控制符... --> % (替换字符...)),这里请不要加双百分号(%%),没有这个规定,会报错。插一句:%格式控制符,其实它隐式调用相应格式转换方法,比如:%s --> str()。