zoukankan      html  css  js  c++  java
  • python格式化字符串

    Python格式化字符串的4种方式

    一:%号

     %号格式化字符串的方式从Python诞生之初就已经存在,时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。

    # 1、格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应
    # ps:当需格式化的字符串过多时,位置极容易搞混
    print('%s asked %s to do something' % ('egon', 'lili'))  # egon asked lili to do something
    print('%s asked %s to do something' % ('lili', 'egon'))  # lili asked egon to do something
    
    # 2、可以通过字典方式格式化,打破了位置带来的限制与困扰
    print('我的名字是 %(name)s, 我的年龄是 %(age)s.' % {'name': 'egon', 'age': 18})  #我的名字是 egon, 我的年龄是 18.
    
    kwargs={'name': 'egon', 'age': 18}
    print('我的名字是 %(name)s, 我的年龄是 %(age)s.' % kwargs)  #我的名字是 egon, 我的年龄是 18.

    二:str.format

     该format方法是在Python 2.6中引入的,是字符串类型的内置方法。因为str.format的方式在性能和使用的灵活性上都比%号更胜一筹,所以推荐使用

    2.1 使用位置参数

    # 按照位置一一对应
    print('{} asked {} to do something'.format('egon', 'lili'))  # egon asked lili to do something
    print('{} asked {} to do something'.format('lili', 'egon'))  # lili asked egon to do something

    2.2 使用索引

    # 使用索引取对应位置的值
    print('{0}{0}{1}{0}'.format('x','y')) # xxyx

    2.3 使用关键字参数or字典

    # 可以通过关键字or字典方式的方式格式化,打破了位置带来的限制与困扰
    print('我的名字是 {name}, 我的年龄是 {age}.'.format(age=18, name='egon'))
    #print("{x:=^10},my name is {y}".format(x="开始执行",y="egon"))   #打印结果===开始执行===,my name is egon
    kwargs = {'name': 'egon', 'age': 18} print('我的名字是 {name}, 我的年龄是 {age}.'.format(**kwargs)) # 使用**进行解包操作

    2.4 填充与格式化

    # 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
    
    # *<10:左对齐,总共10个字符,不够的用*号填充
    print('{0:*<10}'.format('开始执行')) # 开始执行******
    
    # *>10:右对齐,总共10个字符,不够的用*号填充
    print('{0:*>10}'.format('开始执行')) # ******开始执行
    
    # *^10:居中显示,总共10个字符,不够的用*号填充
    print('{0:*^10}'.format('开始执行')) # ***开始执行***

    2.5 精度与进制

    print('{salary:.3f}'.format(salary=1232132.12351))  #精确到小数点后3位,四舍五入,结果为:1232132.124
    print('{0:b}'.format(123))  # 转成二进制,结果为:1111011
    print('{0:o}'.format(9))  # 转成八进制,结果为:11
    print('{0:x}'.format(15))  # 转成十六进制,结果为:f
    print('{0:,}'.format(99812939393931))  # 千分位格式化,结果为:99,812,939,393,931

    三:f-Strings(不推荐使用,python3.5之后版本才有的用法)

    str.format() 比 %格式化高级了一些,但是它还是有自己的缺陷。当需要传入的字符串过多时,仍然会显得非常冗长。与在Python 3.6中引入 了f-strings,不仅比str.format更简洁,性能上也更胜一筹

    ​ f-string是以f或F开头的字符串, 核心在于字符串中符号{}的使用

    3.1 {}中可以是变量名

    name = 'egon'
    age = 18
    print(f'{name} {age}')  # egon 18
    print(F'{age} {name}')  # 18 egon

    3.2 {}中可以是表达式

    # 可以在{}中放置任意合法的Python表达式,会在运行时计算
    # 比如:数学表达式
    print(f'{3*3/2}') # 4.5
    
    # 比如:函数的调用
    def foo(n):
        print('foo say hello')
        return n
    
    print(f'{foo(10)}') # 会调用foo(10),然后打印其返回值
    
    # 比如:调用对象的方法
    name='EGON'
    print(f'{name.lower()}') # egon

    3.3 在类中的使用

    >>> class Person(object):
    ...     def __init__(self, name, age):
    ...         self.name = name
    ...         self.age = age
    ...     def __str__(self):
    ...         return f'{self.name}:{self.age}'
    ...     def __repr__(self):
    ...         return f'===>{self.name}:{self.age}<==='
    ... 
    >>> 
    >>> obj=Person('egon',18)
    >>> print(obj) # 触发__str__
    egon:18
    >>> obj        # 触发__repr__
    ===>egon:18<===
    >>> 
    >>> 
    >>> 
    >>> # 在f-Strings中的使用
    >>> f'{obj}'   # 触发__str__
    'egon:18'
    >>> f'{obj!r}' # 触发__repr__
    '===>egon:18<==='
  • 相关阅读:
    三数之和
    罗马数字与整数
    Oracle 开启或关闭归档
    Oracle RMAN scripts to delete archivelog
    Oracle check TBS usage
    Oracle kill locked sessions
    场景9 深入RAC运行原理
    场景7 Data Guard
    场景4 Data Warehouse Management 数据仓库
    场景5 Performance Management
  • 原文地址:https://www.cnblogs.com/baicai37/p/12421816.html
Copyright © 2011-2022 走看看