Python 5 字符串格式化

Python 5 字符串格式化

旧博客Python系列

字符串格式化在python里有两种,一种是C语言风格的以%为占位符的方法,一种是以字符串.format方法的格式化,推荐使用后者,更加方便理解,让代码也更python.

字符串的格式化用途,在于将结果仅用于输出,不再进行进一步操作的时候,可以快捷的输出结果,而不需要再对结果进行一系列操作输出结果,比如可以用.5s来截取字符串的前五位,而没有必要写一个字符串切片来输出.

C语言风格的字符串

%[(name)][flags][width].[precision]typecode
name一定要加一个括号,相当于变量名.

flags 可选,可供选择的值有:
+ 右对齐;正数前加正好,负数前加负号;
- 左对齐;正数前无符号,负数前加负号;
空格 右对齐;正数前加空格,负数前加负号;
0 右对齐;正数前无符号,负数前加负号;用0填充空白处

width表示宽度,是一个正整数,表示用多少宽度来显示,如果宽度小于要显示的内容长度,则无效.
.precision 是保留多少位数或者取多少位数
typecode是必须的,表示以何种类型显示,常用的是s字符串,d十进制

在接收%传入的内容的时候,如果有变量名,则可以采用赋值或者字典的方式均可以,如果没有指定变量名,除了按顺序传入之外,依然可以接受迭代器的方式,这是python比c语言有变化的地方.

C语言风格的字符串格式化方法已经不推荐使用.推荐使用.format方法

邪道方法,给字符串加颜色:\033[45;1m*********\033[0m,这样给*的部分加上底色,其中45那里控制颜色.这其实是ANSI转义,在linux命令行模式里也可以使用,还有很多用途.

注意:print函数的sep参数可以直接将各个部分用sep拼接后输出.

format字符串格式化方法

format的占位符是{},除了单独的大括号之外,还可以在大括号之内填入一系列控制字符
format的格式很灵活,举例如下:

{1}表示用format的第二个参数
{1[1]} 表示format的第二个参数的第二个元素

如果仅写上边的索引,就直接拿后的字符串过来用.
如果要加格式,则要用 索引:操作符的方式,操作符的方式就是:
{name:[[fill]align][sign][#][0][width][,][.precision][type]}

举例:
以50的宽度显示,空白填充!:{name:!^50s}
align 【可选】对齐方式(需配合width使用)
<,内容左对齐
>,内容右对齐(默认)
,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
^,内容居中
sign 【可选】有无符号数字
+,正号加正,负号加负;
-,正号不变,负号加负;
空格 ,正号空格,负号加负;

示例:

# 将a显示靠右对齐,用逗号分隔数字,保留4位小数,显示为浮点数,用叹号补齐空白,显示正负号:
a = 4567545245.43214323
print('Test string is {:!>+40,.4f}'.format(a))

.format方法实际上是将参数弄成一个有序的序列一样的东西,虽然底层不知道是什么,但一样支持索引和迭代器的各种拆解参数和使用,非常灵活:

tpl = ""i am {name}, age {age}, really {name}"".format(**{""name"": ""seven"", ""age"": 18})
tpl = ""i am {:s}, age {:d}"".format(*[""seven"", 18])

字符串格式化的官方文档地址,其实遇到需求以后查询官方文档是个很好的方法.

后边要开始学函数了,一直觉得一门语言直到学函数,才算是真正开始学习,之前的只能说是了解这门语言的语法而已.有了函数,才能够写一些可以实际使用的东西.

LICENSED UNDER CC BY-NC-SA 4.0
Comment