在交互式解释器里跟随我操作
>>> '我喜欢 %s 色' % '红'
'我喜欢 红 色'
>>> a = '我是%s, 今年%d 岁'
>>> b = a % ('小明', 14)
>>> b
'我是小明, 今年14 岁'
你应当注意到,字符串a当中有一些内容用了一些特殊表示形式,%s, %d ,这样做的目的是为了通过格式化字符串来填充这部分内容,以便于生成想要的字符串内容。
python提供了很多字符串格式化符号,用以格式生成不同类型的数据
符号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
使用% 虽然可以格式化,但我并不推荐你用这种方法,因为这样写出来的代码可阅读性较差,更加友好的方式是使用字符串的format方法
格式化,推荐使用字符串format方法
string = "I like {color}".format(color='red')
print(string)
string = "我喜欢 {color},{color}让人安静".format(color='绿色')
print(string)
string = "{course}考了90分,{name}非常高兴"
string = string.format(course="语文", name="李雷")
print(string)
字符串里希望被替换的内容,用大括号包裹起来,在format方法的参数里,你需要设置替换的方法,比如在第二个例子中,设置color = '绿色', 那么字符串里,所有的{color}都会被替换成绿色。
使用format方法,使得代码看起来更加语义明确,需要被填充的地方将由什么数据填充一清二楚,而如果使用% ,你不得不仔细核对每一处替换与数据的对应关系,当字符串有很多处需要替换填充时,这种核对将变成灾难。
f-string 是python3.6加入的一种新技术,这种技术称之为字面量格式化字符串。
color = '红色'
string = f'我喜欢{color}'
print(string)
info = {'languge': 'python', 'site': 'http://www.coolpython.net'}
print(f"我正在学习{info['languge']}, 使用的教程网址是{info['site']}")
这种技术,会自动将前面的变量内容填充到字符串中以达到格式化字符串的目的。
关于字符串的格式化,我会在进阶教程里继续讲解,目前,作为基础教程学习者,你能掌握并合理运用本篇文章的内容就算合格。
QQ交流群: 211426309