字符串的学习:
%号的使用
字符串的关键字转义
format的使用
基本转换环节
浮点类型的显示%号的使用
首先我们可以了解到%号是作为转义 也就是将字符串内包含的%s用于转换为后面需要替代的内容正常使用情况下
tmpl = "Hello,%s.I use %s"
change_str = ("python","it")
tmpl % change_str
输出
Hello,python.I use it 这个字符串可以赋值 不然是不存在于任何变量的
遇到的问题 如果change_str 用list的形式去%转换的话解释器会报错
TypeError: not enough arguments for format string
最后在这个blog下找到答案
(1)如果使用列表或者其他序列代替元组,那么序列就会被解释成一个值。只有元组和字典可以格式化一个以上的值。
所以在才需要格式化两个值时最好是采用元组或者字典的形式。
(2)如果要在格式化字符串里面包括百分号,那么必须使用%%,这样Python就不会将百分号误认为是转换说明符了。
字符串的关键字转义
需要从string包里面导入Template
from string import Templatetmpl = Template("Hello,$who,$what do you like?")
tmpl.substitute(who="Python",what="that")
format的使用
上几个个比较有意思的例子即可"{foo} {1} {bar} {0}".format(1,2,bar=4,foo=3)
输出3 2 4 1,括号内的1是作为index索引到后面元组的2的参数值,如果{}内不添加索引则默认从小到大开始
同时发现一个很有意思的现象
"{foo},{2},{4}".format("y","z", "u","m","x",foo ="1")
输出'1,u,x'
在编写的时候如果foo这个关键字替换放在前面或者中间 Python解释器会报错
"{foo},{2},{4}".format(foo =1,'y','z', 'u','m')
SyntaxError: positional argument follows keyword argument
所以关键字参数应该是放置在最后面的
所以换到最后
"{foo},{2},{4}".format('y','z', 'u','m','x',foo =1)
输出'1,u,x'正常
还有 foo=1 不能用于做为引用量
"{foo},{2},{4}".format("y","z", "u","m",foo ="1")
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
"{foo},{2},{4}".format("y","z", "u","m",foo ="1")
IndexError: tuple index out of range
基本转换环节
print("{pi!s} {pi!r} {pi!a}".format(pi = "π"))π 'π' '\u03c0'
分别对应str repr ascii转换
浮点类型的显示
from math import pi>>> "{pi:10.2f}".format(pi = pi)
' 3.14'
首先前面的10是开辟了一个10个字符大小的空间显示,然后后面.2是用于显示精度的
其中有一个要点,字符串和数字的对齐方式是不同的,数对齐默认在最后面
字符串是在最前面开始显示的
我们可以自己进行设置对齐方式采用<、>、^三个符号
print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(pi))
3.14
3.14
3.14
表示从0开始至10然后依次选择对齐方式即可。
其中还可以用
"{:#x}".format(42)
'0x2a'
加#号把16进制等格式表示出来 类似于C语言下printf("%#x",42).同样显示