• 特有的字符串格式化函数format——python篇


    format 格式化函数

    字符串调用方法format,并提供要设置其格式的值。

    str.format() 方法通过字符串中的大括号{} 来识别替换字段 ,从而完成字符串的格式化。

    字段名:

    • 省略字段名:{}
    • 使用非负十进制整数{0}
    • 变量名{name}

    省略字段名

    大括号内省略字段名,根据位置参数参数。

    • 替换字段形式: {}

    • 注意:大括号个数可以少于位置参数的个数。

      s = '你好啊{},我叫{}!'.format('小明', '小红')
      print(s)
      
      print('{}你可以吗?不行我来'.format('小黑', '小小鸟'))
      
      """
      你好啊小明,我叫小红!
      小黑你可以吗?不行我来
      """
    

    数字字段名

    可以通过数字形式的简单字段名传递位置参数。

    • 数字必须是大于等于 0 的整数。

    • 带数字的替换字段可以重复使用。

    • 数字形式的简单字段名相当于把 format 中的所有位置参数整体当作一个元组,通过字段名中的数字进行取值。即 {0} 等价于 tuple[0],所以大括号内的数字不能越界。

      print('====数字字段名========')
      s = '你好啊{1},我叫{0}!'.format('小明', '小红')
      print(s)
      print('你好啊{0},我叫{1}!'.format('小明', '小红'))
      # 错误写法:相当于下标越界
      # print('{1}'.format('ss'))
      
      """
      你好啊小红,我叫小明!
      你好啊小明,我叫小红!
      """
      

    关键字字段名(变量字段名)

    使用变量名形式传递关键字参数,字段位置可随意,但需声明关键字。

    print('大家好我叫{name},今年{age}岁了'.format(age=20, name='小毛毛'))
    print('大家好我叫{name},今年{age}岁了'.format(name='小毛毛', age=20))
    
    """
    大家好我叫小毛毛,今年20岁了
    大家好我叫小毛毛,今年20岁了
    """
    

    复合字段名

    • 同时使用了数字和变量名两种形式的字段名就是复合字段名

    • 复合字段名

      支持两种操作符:

      • . 点号
      • [] 中括号

    使用. 点号

    传递位置参数

    • 替换字段形式:{数字.属性名}
    • 只有一个替换字段的时候可以省略数字
    class Person(object):
      def __init__(self,name,age,gender):
        self.name = name
        self.age = age
        self.gender = gender
    p = Person('zhangsan',18,'female')
    print('姓名是{0.name},年龄是{0.age},性别是{0.gender}'.format(p))
    print('姓名是{.name}'.format(p))  # 只有一个替换字段时,可以省略数字
    

    使用[]中括号

    • 用列表传递位置参数

    • 用元组传递位置参数

    • 用字典传递位置参数

      # 使用`[]`中括号
      # 中括号用法:用元组传递位置参数
      food = ('小毛毛', '南瓜')
      print('我叫{0[0]},年龄{1},爱吃{0[1]}。'.format(
          food, 36))
      """
      我叫小毛毛,年龄36,爱吃南瓜。
      """
      
      # 中括号用法:用字典传递位置参数
      dic = dict(name='小毛毛', pid=1001)
      print('我是{[name]}!'.format(
          dic))
      # 多个替换字段,不能省略数字
      print('我是{0[name]},学号{0[pid]}。'.format(
          dic))
      """
      我是小毛毛!
      我是小毛毛,学号1001。
      """
    

    简化format

    format格式化一般是在一段字符串后调用,format方法。

    简化方法:在字符串前面声明f,既可以不用在写.format后面的语句。例:f'我是{name},今年{age}岁了。

    大括号里面一般用变量传值。

    name = '毛毛'
    age = 20
    print(f'我是{name},今年{age}岁了')
    print(f'我是{"毛毛"},今年{age}岁了')
    """
    我是毛毛,今年20岁了
    我是毛毛,今年20岁了
    """
    

    简单字段名的混合使用

    • 混合使用数字形式和变量名形式的字段名,可以同时传递位置参数和关键字参数。
    • 关键字参数必须位于位置参数之后。
    • 混合使用时可以省略数字。
    • 省略字段名 {} 不能和数字形式的字段名 {非负整数} 同时使用。

    转换标志

    跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str)和a(表示ascii)。如果你指定了转换标志,将不使用对象本身的格式设置机制,而是使用指定的函数将对象转换为字符串,再做进一步的格式设置。

    # 转换字段
    print('我是{!s}!'.format('小毛毛'))
    print('我是{!r}!'.format('小毛毛'))
    print('我是{!a}!'.format('小毛毛'))
    """
    我是小毛毛!
    我是'小毛毛'!
    我是'u5c0fu6bdbu6bdb'!
    """
    

    基本转换

    类型 含义
    b 将整数表示为二进制数
    c 将整数解读为Unicode码点
    d 将整数视为十进制数进行处理,这是整数默认使用的说明符
    e 使用科学表示法来表示小数(用e来表示指数)
    E 与e相同,但使用E来表示指数
    f 将小数表示为定点数
    F 与f相同,但对于特殊值(nan和inf),使用大写表示
    g 自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位小数
    G 与g相同,但使用大写来表示指数和特殊值
    n 与g相同,但插入随区域而异的数字分隔符
    o 将整数表示为八进制数
    s 保持字符串的格式不变,这是默认用于字符串的说明符
    x 将整数表示为十六进制数并使用小写字母
    X 与x相同,但使用大写字母
    % 将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加上%)
    # 将小数表示为定点数
    print("The number is {num}".format(num=42))
    print("The number is {num:f}".format(num=42))
    print("The number is {num:F}".format(num=42))
    # 将整数转换为二进制数
    print("The number is {num:b}".format(num=42))
    
    """
    The number is 42
    The number is 42.000000
    The number is 42.000000
    The number is 101010
    """
    

    数字格式化

    数字 格式 输出 描述
    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)
    print('{:.2f}'.format(3.1415926))
    print('{:+.2f}'.format(3.1415926))
    print('{:+.2f}'.format(-1))
    print('{:.0f}'.format(2.71828))
    print('{:0>2d}'.format(5))
    print('{:x<4d}'.format(5))
    print('{:x<4d}'.format(10))
    print('{:,}'.format(1000000))
    print('{:.2%}'.format(0.25))
    print('{:.2e}'.format(1000))
    print('{:>10d}'.format(13))
    print('{:<10d}'.format(13))
    print('{:^10d}'.format(13))
    
    """
    3.14
    +3.14
    -1.00
    3
    05
    5xxx
    10xx
    1,000,000
    25.00%
    1.00e+03
            13
    13        
        13  
    """
    
  • 相关阅读:
    状态机的常见问题
    基于quartus的高级时序分析
    FPGA中的时钟域问题
    quartus中的时序约束常用方法
    时序约束与时序分析
    FPGA的PCB设计
    AXI4的主机协议代码分析
    selenium 笔记 场景判断
    Codeforces Round #676 (Div. 2) XORwice、Putting Bricks in the Wall、Palindromifier
    Trap HDU
  • 原文地址:https://www.cnblogs.com/nongma-reddy/p/13167662.html
Copyright © 2020-2023  润新知