python3 formatString.py

"""
模块:python3 formatString.py
功能:python3 字符串格式化。
参考:https://www.runoob.com/python3/python3-string.html
知识点:
1.Python 支持格式化字符串的输出。
尽管这样可能会用到非常复杂的表达式,
但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

2.python字符串格式化符号:
%s  格式化字符串
%d  格式化(dec 十进制)整数
%f  格式化浮点数字,可指定小数点后的精度
%o  格式化无符号八进制数(oct 八进制)
%x  格式化无符号十六进制数(小写)
%X  格式化无符号十六进制数(大写)
%e  用科学计数法格式化浮点数
%E  作用同%e,用科学计数法格式化浮点数
%g  %f和%e的简写
%G  %f 和 %E 的简写
%p  用十六进制数格式化变量的地址
%  '%%'输出一个单一的'%'
%u  格式化无符号整型
%c  格式化字符及其ASCII码

3.格式化操作符辅助指令:
-      用做左对齐
+      在正数前面显示加号( + )
m.n.    m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
0      显示的数字前面填充'0'而不是默认的空格
#      在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
*     宽度或者小数点精度占位符,从后面参数读取。
"""
# 一、格式化占位符(最早出现)
# 1.格式化输出
print("我叫 %s 今年 %d 岁!" % ('小明', 10))
# 我叫 小明 今年 10 岁!
r = "the length of %s is %d" % ('runoob', len('runoob'))
print(r)
# the length of runoob is 6

print("%d" % -50)
# -50
print("%5d" % -50)
#   -50

# 显示正负号,%f,默认精度:6(位小数)。
print('%+f' % -5.69)
# -5.690000
print('%f' % -5.69)
# -5.690000
print("%f" % 3.141592653589793)
# 3.141593
# 格式化输出浮点数(float)
pi = 3.141592653
# 字段宽10,精度3,数字前面补0。
print('%010.3f' % pi)
# 000003.142
# 用 * 从后面的元组中读取字段宽度或精度
print("pi = %.*f" % (2, pi))
# pi = 3.14
print("pi = %.*f" % (3, pi))
# pi = 3.142
# 宽度 7,精度 3,显示 "+/-"号,剩余宽度补 0,默认右对齐。
print("pi = %+0*.*f" % (7, 3, pi))
# pi = +03.142
# 左对齐
print('%-10.3f' % pi)
# 3.142
# 字符总长度 5(包括"."),显示的数字前面填充'0'。
print("%05.2f" % 3.141592653589793)
# 03.14
print("%+06.2f" % 3.141592653589793)
# +03.14
print("%-+6.2f" % 3.141592653589793)
# +3.14 , 注意:此处右边有一个空格!

# 指数计数。
print("%e, %E" % (1000, 1000))
# 1.000000e+03, 1.000000E+03
print("%.2e, %.1E" % (1000, 1000))
# 1.00e+03, 1.0E+03
print("%.g, %.G" % (1000, 1000))
# 1e+03, 1E+03
print("%u" % 1000)
# 1000
print("%c" % "h")
# h


# # 1.2.进制
# print("\n1.2.")
# print("%o" % 10)
# # 12
# print("%#o" % 10)
# # 0o12
# print("%x, %X" % (10, 10))
# # a, A
# print("%#x, %#X" % (10, 10))
# # 0xa, 0XA
# # 格式化输出16进制,十进制,八进制整数
# # %x --- hex 十六进制
# # %d --- dec 十进制
# # %o --- oct 八进制
# nHex = 0xFF
# print("nHex = %#x,nDec = %d,nOct = %#o" % (nHex, nHex, nHex))
# # nHex = 0xff,nDec = 255,nOct = 0o377

# # 二、str.format()(python2.6)
# # 参考:https://www.runoob.com/python/att-string-format.html
# # 基本语法:通过 {} 和 : 来代替以前的 % 。
# # format 函数可以接受不限个参数,位置可以不按顺序。
# # 2.1.
# print("\n2.1.")
# # 不设置指定位置,按默认顺序
# print("{} {}".format("hello", "world"))
# # hello world
# # 设置指定位置
# print("{0}-{1}".format("hello", "world"))
# # hello-world
# print("{1} {0} {1}".format("hello", "world"))
# # world hello world
#
# # 2.2.设置参数
# print("\n2.2.")
# # 关键字传参
# print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
# # 网站名:菜鸟教程, 地址 www.runoob.com
# # 通过字典设置参数("**"字典传参)
# site = {"name": "菜鸟教程", "url": "www.runoob.com"}
# print("网站名:{name}, 地址 {url}".format(**site))
# # 网站名:菜鸟教程, 地址 www.runoob.com
# # 通过列表索引设置参数
# my_list = ['菜鸟教程', 'www.runoob.com']
# # "0" 是必须的
# print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))
# # 网站名:菜鸟教程, 地址 www.runoob.com
# # "*"序列传参。
# print("网站名:{0}, 地址 {1}".format(*my_list))
#
#
# # 网站名:菜鸟教程, 地址 www.runoob.com
#
# # 2.3.向 str.format() 传入对象
# class AssignValue(object):
#     def __init__(self, value):
#         self.value = value
#
#
# my_value = AssignValue(6)
# print("\n2.3.")
# # "0" 是可选的
# print('value 为: {0.value}'.format(my_value))
# # value 为: 6
# print('value 为: {.value}'.format(my_value))
# # value 为: 6
#
# # 2.4.数字格式化
# print("\n2.4.")
# print("{:.2f}".format(3.1415926))
# # 3.14
# # 数字         格式 输出     描述
# # 3.1415926      {:.2f} 3.14       保留小数点后两位
# # 3.1415926      {:+.2f}    +3.14      带符号保留小数点后两位
# # -1         {:+.2f}    -1.00      带符号保留小数点后两位
# # 2.71828        {:.0f} 3          不带小数
# # 5              {:0>2d}    05         数字补零 (填充左边, 宽度为2)
# # 5              {:x<4d}    5xxx       数字补x (填充右边, 宽度为4)
# # 10         {:x<4d}    10xx       数字补x (填充右边, 宽度为4)
# # 1000000        {:,}   1,000,000  以逗号分隔的数字格式
# # 0.25           {:.2%} 25.00%     百分比格式
# # 1000000000 {:.2e} 1.00e+09   指数记法
# # 13         {:>10d}            13 右对齐 (默认, 宽度为10)
# # 13         {:<10d}    13         左对齐 (宽度为10)
# # 13         {:^10d}        13     中间对齐 (宽度为10)
# # 11                                进制
# # '{:b}'.format(11)     # 1011
# # '{:d}'.format(11)     # 11
# # '{:o}'.format(11)     # 13
# # '{:x}'.format(11)     # b
# # '{:#x}'.format(11)    # 0xb
# # '{:#X}'.format(11)    # 0XB
#
# # ^, <, > 分别是居中、左对齐、右对齐,后面带宽度,
# # : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
# # + 表示在正数前显示 +,负数前显示 -;  (空格)表示在正数前加空格
# # b、d、o、x 分别是二进制、十进制、八进制、十六进制。
#
# # 2.5.使用大括号 {} 来转义大括号
# print("\n2.5.")
# print("{} 对应的位置是 {{0}}".format("runoob"))
# # runoob 对应的位置是 {0}


# 三、f-string(最新)
# f-string 是 python3.6 之后版本添加的,
# 称之为字面量格式化字符串,是新的格式化字符串的语法。
# 之前我们习惯用百分号 (%)。
# f-string 格式话字符串以 f 开头,后面跟着字符串,
# 字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去。
# 用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
name = 'Runoob'
print('Hello %s' % name)
# Hello Runoob
name = 'Runoob'
print(f'Hello {name}')  # 替换变量
# Hello Runoob
print(f'{1 + 2}')  # 使用表达式
# 3
w = {'name': 'Runoob', 'url': 'www.runoob.com'}
print(f'{w["name"]}: {w["url"]}')
# Runoob: www.runoob.com

# 在 Python 3.8 的版本中可以使用 = 符号,来拼接 运算表达式 与 结果。
x = 1
print(f'{x + 1}')  # 2
# print(f'{x + 1=}')  # x+1=2


发布了197 篇原创文章 · 获赞 61 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/weixin_42193179/article/details/105540561