python格式化字符串

python格式化字符串

    • 1. 使用 % 格式化字符串
    • 2. 使用 format 格式化字符串
    • 3. 使用字面量格式化字符串(f-string)

1. 使用 % 格式化字符串

  • 字符串格式化符号:

    符号 说明
    %c 格式化字符及其ASCII码
    %s 格式化字符串
    %d 格式化整数
    %u 格式化无符号整型
    %o 格式化无符号八进制数
    %x 格式化无符号十六进制数
    %X 格式化无符号十六进制数(大写)
    %f 格式化浮点数字,可指定小数点后的精度
    %e 用科学计数法格式化浮点数
    %E 作用同%e,用科学计数法格式化浮点数
    %g %f和%e的简写
    %G %f 和 %E 的简写
    %p 用十六进制数格式化变量的地址
  • 格式化操作符辅助指令:

    符号 功能
    * 定义宽度或者小数点精度
    - 用做左对齐
    + 在正数前面显示加号( + )
    在正数前面显示空格
    # 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
    0 显示的数字前面填充’0’而不是默认的空格
    % ‘%%‘输出一个单一的’%’
    (var) 映射变量(字典参数)
    m.n. m 是显示的最小总宽度,不足时默认补空格,n 是小数点后的位数(如果可用的话)
    print('%010d' % 10)  # 十进制(dec)形式输出整数,右对齐,长度为10,不足填充0
    print('%-10o' % 10)  # 八进制(oct)形式输出整数,左对齐,长度为十
    print('%#x' % 10)  # 十六进制(hex)形式输出整数,并在前面显示 0x 标志
    
    print('%f' % 10.258)  # 默认保留六位小数
    print('%.2f' % 10.258)  # 保留两位小数
    print('%010.2f' % 10.258)  # 总长度10(包括小数点),不足前面补零,保留两位小数
    
    print('%-10s%s' % ('good', 'job')  # 先左对齐长度为10输出第一个字符串,接着在第十一位开始输出第二个字符串
    print('%10.2s' % 'good job')  # 总长度为10,右对齐,截取前两位
    
    
    out:
    	0000000010
    	12
    	0xa
    	10.258000
    	10.26
    	0000010.26
    	good      job
    	        go
    

2. 使用 format 格式化字符串

  • 用法

    str.format(str1[, str2, str3])
    
  • 简单使用

    print('{} {}'.format('Hello', 'World'))  # 不设置指定位置,按默认顺序
    print('{1} {0} {1}'.format('Hello', 'World'))  # 设置指定位置,则按format函数对应的参数位置输出
    
    
    out:
    	Hello World
    	World Hello World
    
  • 设置参数

    # 以关键字参数的形式
    print('姓名:{name},年龄:{age}'.format(name='小李子', age=18))
    
    # 通过字典设置参数
    xiaolizi = {'name': '小李子', 'age': 18}
    print('姓名:{name},年龄:{age}'.format(**xiaolizi))  # 通过字典设置参数
    
    # 通过列表索引设置参数
    xiaolizi = ['小李子', 18]
    print('姓名:{0[0]},年龄:{0[1]}'.format(xiaolizi))
    
    # 通过对象设置参数
    class XiaoLiZi(object):
        
        def __init__(self):
            self.name = '小李子'
            self.age = 18
    
    xiaolizi = XiaoLiZi()
    print('姓名:{0.name},年龄:{0.age}'.format(xiaolizi))
    
    
    out:
    	姓名:小李子,年龄:18
    	姓名:小李子,年龄:18
    	姓名:小李子,年龄:18
    	姓名:小李子,年龄:18
    
  • 格式化数字

    • 规则:

      • ^, <, > 分别是居中、左对齐、右对齐,后面带宽度
      • : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充
      • +号表示在正数前显示 +,负数前显示 -
      • (空格)表示在正数前加空格
      • b、d、o、x 分别是二进制、十进制、八进制、十六进制
      • 可以使用大括号 {} 来转义大括号
      • #号表示在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
    • 实例:

      print('{:f}'.format(3.1415926))  # 默认保留六位小数
      
      print('{: .2f}'.format(3.1415926))  # 保留两位小数,并在前面加空格
      
      print('{:.0f}'.format(3.5415926))  # 四舍五入后取整
      
      print('{:+d}'.format(-3))  # 显示负号-
      
      print('{:#x}'.format(3))  # 八进制显示整数,并在前面显示 0o 标志
      
      print('{:_^5d}'.format(3))  # 总长度为5,居中显示,填充_
      
      print('{:_>5d}'.format(3))  # 总长度为5,右对齐,填充_
      
      print('{:_<5d}'.format(3))  # 总长度为5,左对齐,填充_
      
      print('{:,}'.format(1000000))   # 以逗号分隔的数字格式
      
      print('{:.2%}'.format(0.256))  # 百分数格式显示,并保留两位小数
      
      print('{:.2e}'.format(1235000))  # 指数形式显示,并保留两位有效数字
      
      
      out:
      	3.141593
      	 3.14
      	4
      	-3
      	0x3
      	__3__
      	____3
      	3____
      	1,000,000
      	25.60%
      	1.24e+06
      

3. 使用字面量格式化字符串(f-string)

  • 用法:

    f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去

  • 实例:

    # 替换变量
    name = '小李子'
    print(f'姓名:{name}')  
    
    # 使用表达式
    print(f'1 + 2 = {1+2}')  
    
    # 使用字典
    xiaolizi = {'name': '小李子', 'age': 18}
    print(f'姓名:{xiaolizi["name"]},年龄:{xiaolizi["age"]}')
    
    # 在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果
    print(f'{1+2=}')
    
    
    out:
    	姓名:小李子
    	1 + 2 = 3
    	姓名:小李子,年龄:18
    	1+2=3
    

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