Python format方法详解|字符串格式化|format

文章目录

  • 1.简单运用
  • 2. 格式控制信息
  • 3. format参数中的list、tuple可以使用“*”拆包
  • 4.案例

1.简单运用

字符串类型格式化采用format()方法,基本使用格式是:
<模板字符串>.format(<逗号分隔的参数>)
调用format()方法后会返回一个新的字符串,参数从0 开始编号。

"{}:计算机{}的CPU 占用率为{}%。".format("2016-12-31","PYTHON",10)
Out[10]: '2016-12-31:计算机PYTHON的CPU 占用率为10%。'

format()方法可以非常方便地连接不同类型的变量或内容,如果需要输出大括号,采用{{表示{,}}表示},例如:

"{}{}{}".format("圆周率是",3.1415926,"...")
Out[11]: '圆周率是3.1415926...'
 
"圆周率{{{1}{2}}}是{0}".format("无理数",3.1415926,"...")
Out[12]: '圆周率{3.1415926...}是无理数'
 
s="圆周率{{{1}{2}}}是{0}" #大括号本身是字符串的一部分
 
s
Out[14]: '圆周率{{{1}{2}}}是{0}'
 
s.format("无理数",3.1415926,"...") #当调用format()时解析大括号
Out[15]: '圆周率{3.1415926...}是无理数'

2. 格式控制信息

format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:
{<参数序号>: <格式控制标记>}
其中,<格式控制标记>用来控制参数显示时的格式,包括:<填充><对齐><宽度>,<.精度><类型>6 个字段,这些字段都是可选的,可以组合使用,逐一介绍如下。
Python format方法详解|字符串格式化|format_第1张图片

特别注意:
当format()中的参数时元组、list时,冒号前的参数表示元组、list中的位置。

<宽度>

指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。

<对齐>

指参数在<宽度>内输出时的对齐方式,分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。

<填充>

指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格,可以通过<填充>更换。

s = "PYTHON"
 
"{0:30}".format(s)
Out[17]: 'PYTHON                        '
 
"{0:>30}".format(s)
Out[18]: '                        PYTHON'
 
"{0:*^30}".format(s)
Out[19]: '************PYTHON************'
 
"{0:-^30}".format(s)
Out[20]: '------------PYTHON------------'
 
"{0:3}".format(s)
Out[21]: 'PYTHON'

逗号(,)

<格式控制标记>中逗号(,)用于显示数字的千位分隔符,例如:

"{0:-^20,}".format(1234567890)
Out[24]: '---1,234,567,890----'
 
"{0:-^20}".format(1234567890) #对比输出
Out[25]: '-----1234567890-----'
 
"{0:-^20,}".format(12345.67890)
Out[26]: '----12,345.6789-----'

<.精度>

表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。

"{0:.2f}".format(12345.67890)
Out[29]: '12345.68'
 
"{0:H^20.3f}".format(12345.67890)
Out[30]: 'HHHHH12345.679HHHHHH'
 
"{0:.4}".format("PYTHON")
Out[31]: 'PYTH'

<类型>

表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括6 种:

  • b: 输出整数的二进制方式;
  • c: 输出整数对应的 Unicode 字符;
  • d: 输出整数的十进制方式;
  • o: 输出整数的八进制方式;
  • x: 输出整数的小写十六进制方式;
  • X: 输出整数的大写十六进制方式;
"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
Out[32]: '110101001,Ʃ,425,651,1a9,1A9'

对于浮点数类型,输出格式包括4 种:

  • e: 输出浮点数对应的小写字母 e 的指数形式;
  • E: 输出浮点数对应的大写字母 E 的指数形式;
  • f: 输出浮点数的标准浮点形式;
  • %: 输出浮点数的百分形式。

浮点数输出时尽量使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。

"{0:e},{0:E},{0:f},{0:%}".format(3.14)
Out[33]: '3.140000e+00,3.140000E+00,3.140000,314.000000%'

"{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14)
Out[34]: '3.14e+00,3.14E+00,3.14,314.00%'

3. format参数中的list、tuple可以使用“*”拆包

# 通过字典设置参数
site = {"name": "Bowen's Hobby", "url": "https://www.cnblogs.com/bowen404"}
print("网站名:{name}, 地址 {url}".format(**site))

# 通过列表设置参数
my_list = ["Bowen's Hobby", "https://www.cnblogs.com/bowen404"]
print("网站名:{0}, 地址 {1}".format(*my_list))

# 通过元组设置参数
my_tuple = ("Bowen's Hobby", "https://www.cnblogs.com/bowen404")
print("网站名:{0}, 地址 {1}".format(*my_list))


Out[99]: 
网站名:Bowen's Hobby, 地址 https://www.cnblogs.com/bowen404
网站名:Bowen's Hobby, 地址 https://www.cnblogs.com/bowen404
网站名:Bowen's Hobby, 地址 https://www.cnblogs.com/bowen404

参考:https://www.cnblogs.com/xujiu/p/8352635.html

4.案例

def show(df):
    items_dict = dict()
    extended_day = df.loc['extended_day', :].tolist()[1:]
    while True:
        data = que.get()
        for k, v in data.items():
            items_dict[k] = v
        n = len(items_dict)
        index_code = monitor_dict.keys()[0]
        index_price = items_dict[index_code][0]
        index_askprice = items_dict[index_code][1]
        index_bidprice = items_dict[index_code][2]
        codes = []
        price = []
        askprice = []
        bidprice = []
        columns_str = '{:^8}|' * n
        futures_dict = items_dict.pop(index_code)
        for k, v in futures_dict.items():
            codes.append(k)
            price.append(v[0])
            askprice.append(v[1])
            bidprice.append(v[2])
        basis = [i - index_price for i in price]
        
        columns = 'code         |' + '{:^8}|'.format(index_code) + columns_str.format(*codes)
        lines = '-' * len(columns)
        values1 = 'price        |' + '{:^8}|'.format(index_price) + columns_str.format(*price)
        values2 = 'basis        |' + '{:^8}|'.format('') + columns_str.format(*basis)
        values3 = 'extended_day |' + '{:^8}|'.format('') + columns_str.format(*extended_day)
        values4 = 'askprice     |' + '{:^8}|'.format(index_askprice) + columns_str.format(*askprice)
        values5 = 'bidprice     |' + '{:^8}|'.format(index_bidprice) + columns_str.format(*bidprice)
        os.system('cls')
        print(columns)
        print(lines)
        print(values1)
        print(values2)
        print(values3)
        print(values4)
        print(values5)

效果:
行情实时更新,比行情软件都快。
行情实时更新

更详细的可以参考其他博文:
https://www.cnblogs.com/fat39/p/7159881.html

Python format方法详解|字符串格式化|format_第2张图片
加星
点关注
谢谢

你可能感兴趣的:(Python,python,字符串)