- images
- results
- .gitignore
- 1.1概论.ipynb
- 1.2 环境配置.pdf
- 1.3数据类型.ipynb
- 1.4 人机交互.ipynb
- 1.5 对象与变量.ipynb
- 1.6 编码与命名规范.ipynb
- 2.1 数值类型.ipynb
- 2.2 数值类型转换.ipynb
- 2.3 数值元算.ipynb
- 2.4常用数学运算函数.ipynb
- 2.5 math 模块及其应用.ipynb
- 2.6.1 逻辑值测试.ipynb
- 2.6.2 成员运算.ipynb
- 2.6.3 比较运算.ipynb
- 2.6.4 布尔运算.ipynb
- 2.6.5 运算优先级.ipynb
- 2.ipynb
- 3.1 流程控制结构.ipynb
- 3.3.1 for 循环语句.ipynb
- 3.3.3 rang.ipynb
- 3.3.3 while 循环语句.ipynb
- 3.4 and 3.5 分支结构和条件.ipynb
- 3.6 and 3.7 .ipynb
- 3.9 异常处理.ipynb
- 4 函数和模块化编程.ipynb
- 4.1 函数的定义、调用与返回值.ipynb
- 4.2 函数的参数传递.ipynb
- 4.3 变量的作用域.ipynb
- 4.4 匿名函数.ipynb
- 4.5 递归.ipynb
- 4.6 内置函数.ipynb
- 4.7 模块化程序设计.ipynb
- 5.1 序列通用操作.ipynb
- 5.1.1 索引.ipynb
- 5.1.2 切片.ipynb
- 5.1.3 序列拼接与重复.ipynb
- 5.1.4 成员测试.ipynb
- 5.2.1 字符串的创建.ipynb
- 5.2.2 字符串常量.ipynb
- 5.2.4 字符串的遍历.ipynb
- 5.2.5 文件遍历.ipynb
- 5.2.6 字符串的处理方法.ipynb
- 5.2.7 字符串格式化.ipynb
- 5.2.8 转义字符.ipynb
- 5.3 random 模块及其应用.ipynb
- 6.1 元组.ipynb
- 6.2 列表.ipynb
- 6.2.1 列表的创建.ipynb
- 6.2.2 列表的更新.ipynb
- 6.2.3 列表的删除.ipynb
- 6.2.4 列表的排序.ipynb
- 6.2.5 列表赋值与复制.ipynb
- 6.2.6 列表推导式.ipynb
- 6.2.8 常用内置函数.ipynb
- 6.2.9 列表嵌套及其排序.ipynb
- 6.3 列表综合应用.ipynb
- 7.1.1 集合的创建.ipynb
- 7.1.2可变集合类型的操作.ipynb
- 7.1.3 成员关系.ipynb
- 7.1.4 集合关系.ipynb
- 7.1.5 集合运算.ipynb
- 7.2.1 字典创建.ipynb
- 7.2.2 获取字典值.ipynb
- 7.2.3 修改字典值.ipynb
- 7.2.4内置函数与方法.ipynb
- 7.2.5字典排序输出.ipynb
- 7.3 集合与字典的应用.ipynb
- 8 中 numpy 概述.ipynb
- 8 中panda 库.ipynb
- 8.1 文件的打开与关闭.ipynb
- 8.2 文件读写操作.ipynb
- 8.3 文件的应用.ipynb
- 8.4 numpy 文件操作.ipynb
- 8.4.2 and 3.ipynb
- 8.5.1 pandas文件读写.ipynb
- 8.5.2 and 3 and 4.ipynb
- 9.1 matplotlib 线性图.ipynb
- 9.1.5 数据文化绘图.ipynb
- 9.2 非线性图.ipynb
- 9.3 词云.ipynb
- _overview.md
- _readme.ipynb
- coding_here.ipynb
- dream.png
- score.txt
- score_total.csv
- 成绩分析综合.json
5.2.7 字符串格式化.ipynb @master — view markup · raw · history · blame
字符串格式化¶
<模板字符串>.format(<逗号分隔的参数>)
format()方法中<模板字符串>的大括号中除了包括参数序号,还可以包括格式控制信息。此时,位置的内部样式如下:
格式字符串包含有以花括号 {} 括起来的“替换字段”。
不在花括号之内的内容被视为字面文本,会不加修改地复制到输出中。
如果你需要在字面文本中包含花括号字符,可以通过重复来转义: {{ and }}。
替换字段的语法如下:
{<参数序号>: <格式控制标记>}
其中,<格式控制标记>用来控制参数显示时的格式,包括:
<填充><对齐><宽度>,<.精度><类型>6 个字段,format格式控制标记如表5.10所示。
| 整数 | : | 填充 | 对齐 | 宽度 | , | .精度 | 类别 |
|---|---|---|---|---|---|---|---|
| 参 数 序 号 |
引 导 符 号 |
填 充 字 符 |
左对齐:< 右对齐:> 居中: ^ = |
输 出 宽 度 |
数字 千位 分隔符 |
浮点数 小数位数 或字符串 最大输出长度 |
c Unicode 字符 d 十进制 b/o/x 二/八/十六进制 e/E 浮点数指数形式 f/F 浮点数标准形式 % 百分比输出,并保留两位小数 |
<填充>:指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格,可以通过<填充>更换。
<对齐>:指参数在<宽度>内输出时的对齐方式,分别使用<、> 和 ^ 三个符号表示左对齐、右对齐和居中对齐。使用"="时,强制将填充放在符号(如果有)之后、数字之前。这用于打印格式为 "+000000120 "的字段。该对齐选项仅对数字类型有效。当 "0 "紧接在字段宽度之前时,它将成为数字的默认对齐方式。
<宽度>:指当前位置的设定输出字符宽度,如果该位置对应的format()参数长度比<宽度>设定值大,则使用参数实际长度输出。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。
各种对齐选项的含义如下:
'<':强制字段在可用空间内左对齐(这是大多数对象的默认值)。
'>':强制字段在可用空间内右对齐(这是数字的默认值)。
'=':强制在符号(如果有)之后数码之前放置填充。 这被用于以 '+000000120' 形式打印字段。 这个对齐选项仅对数字类型有效。 这是当 '0' 紧接在字段宽度之前时的默认选项。
'^':强制字段在可用空间内居中。最小字段宽度,
s = '123456789'
for i in range(1, 10):
print('{:->9}'.format(s[:i])) # 字符串切片,得到前i个字符,右对齐输出,“-”填充
s = '123456789'
for i in range(1, 10):
print('{:~^17}'.format(s[:i] + s[:i - 1][::-1])) # 字符串切片,得到前i个字符,居中对齐输出,“+”填充
# <,>(逗号):<格式控制标记>中逗号用于显示数字的千位分隔符
print('{:,}'.format(123456789)) # 输出 123,456,789
<.精度>:表示两个含义,由小数点(.)开头,用于浮点数和字符串,整数时不可用。
对于用“f”和“F”格式化的浮点数,精度表示小数点后保留的数字位数,末尾为0的浮点数保持末尾的0的输出。
print('{:.8f}'.format(3141.59265300979)) # 3141.59265301
print(round(3141.59265300979,5))
print('{:.8F}'.format(3141.59265300079)) # 3141.59265300
print('{:.6f}'.format(314.150000358979)) # 314.150000
对于用“g”和“G”浮点数,精度表示小数点前面和后面保留的数字位数,且会舍去输出数据末尾的零。
print('{:.8g}'.format(314.159265358979)) # 314.15927
print('{:.8G}'.format(314.150000358979)) # 314.15
print('{:.8}'.format('3141.59265300079')) # 3141.592
对于字符串,精度表示输出的最大长度。
print('{:.4}'.format('1.23456789')) # 1.23,算上小数点为4个字符
可结合宽度控制输出格式:
print('{:*^12.4}'.format('1.23456789')) # ****1.23****,占位12字符,字符串取4个字符
精度的数字前没有点时,表示输出的最小占位宽度,输出字符大于宽度时,按实际位数输出。
print('{:>4}'.format('1')) # 1,占4个字符宽度,右对齐
print('{:.>4}'.format('1')) # 1,占4个字符宽度,右对齐,为方便查看,用点做填充字符
print('{:4}'.format('1.23456789')) # 1.23456789,超过宽度时按实际字符输出
<类型>:表示输出整数和浮点数类型的格式规则。
对于整数类型,输出格式包括6 种
对于浮点数类型,输出格式包括4 种
浮点数输出时尽量使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。
| 符号 | 功能 |
|---|---|
| b | 输出整数的二进制方式; |
| c | 输出整数对应的 Unicode 字符; |
| d | 输出整数的十进制方式; |
| o | 输出整数的八进制方式; |
| x/X | 输出整数的小写/大写十六进制方式; |
| e/E | 输出浮点数对应的小写字母 e /大写字母 E的指数形式; |
| f/F | 输出浮点数的标准浮点形式,保留结果末尾的零;3.1500 |
| g/G | 输出浮点数,末尾的零会从结果中被移除,3.15 |
| % | 输出浮点数的百分形式 |
print('{:b}'.format(15)) # b表示将整数转为二进制,1111
print('{:>22,.3f}'.format(15703050635.0))# 22字符居右,千位分隔,3位小数
# 输出: 15,703,050,635.000
print("{}{:.2f}{:.4}".format("圆周率",3.1415926, '是无理数的一个典型例子'))
# .2f 表示浮点数截取2位小数;.4 表示将传入的字符串截取4个字符
# 输出:圆周率3.14是无理数
print('{:*<20}'.format('开始注释')) # 宽20字符,居左,空位用*填充
# 输出:开始注释****************
print('{:*^20}'.format('这是注释')) # 居中
# 输出:********这是注释********
print('{:^20}'.format('无填充字符')) # 居中,无填充
# 输出: 无填充字符
print('{:*>20}'.format('注释结束')) # 居右对齐
# 输出:****************注释结束
在计算机中,所有的数据在存储和运算时都要使用二进制数表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
计算机中存储的都是二进制以十进制整数、十六进制、八进制、二进制和字符形式输出ASCII码值在90-100之间的字符
width = 5
for num in range(90, 100):
for kind in 'dxobc':
print('{0:{width}{base}}'.format(num, base=kind, width=width), end=' ')
print()
width = 5
for num in range(90, 100):
for kind in 'dxobc':
print('{0:{1}{2}}'.format(num, width, kind), end=' ')
print()
format函数具有丰富的格式控制方法,可以方便、快速的进行各种格式的输出,一般建议使用format函数做输出格式控制。
自Python 3.6开始,又增加了一种格式化字符串字面值(Formatted string literals)方法,也称为f-strings。这种方法是带有'f' 或'F' 前缀的字符串字面值。字符串可包含替换字段,即以{} 标识的变量或表达式,格式化字符串字面值实际上是会在运行时被求值的表达式。
width = 5
for num in range(90, 100):
for kind in 'dxobc':
print(f'{num:{width}{kind}}', end=' ')
print()
由于历史的原因,同时考虑到其他语言程序员的习惯,Python 中目前仍保留了%格式符的用法,下面用几个例子了解一下%格式符的语法。
| 符号 | 功能 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x或 %X | 格式化无符号十六进制数 |
| %f 或 %F | 格式化浮点数字,可指定小数点后的精度 |
| %e或 %E | 用科学记数法格式化浮点数 |
| %g或 %G | 自动选择 %f 和 %e 两种格式中较短的格式输出,并且不输出数字后面没有意义的零 |
| %p | 用十六进制数格式化变量的地址 |
| % | 当字符串中存在格式化标志时,需要用 %%表示一个百分号 |
print('Hi, %s, you have $%d.' % ('Michael', 1000000))
格式化操作符辅助指令
| 符号 | 功能 |
|---|---|
| * | 定义宽度或者小数点精度 |
| - | 用做左对齐 |
| + | 在正数前面显示加号( + ) |
| <sp > | 在正数前面显示空格 |
| \# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
| 0 | 显示的数字前面填充“0”而不是默认的空格 |
| % | “%%”输出一个单一的“%” |
| (var) | 映射变量(字典参数) |
| m.n | m是显示的最小总宽度,n是小数点后的位数 |
print('--------%(p).2f' % {'p': 1.23456}) # 保留2位有小数
print('--------%(p)f' % {'p': 1.23456}) # 默认精度,保留小数点后6位
%c 65转unicode值对应字符A;
%o 整数15转成对应的8进制数17;
%x 整数15转成对应的16进制数f
print('***%c***%o***%x' % (65, 15, 15))