格式化字符串方法

    技术2025-07-07  15

    一、最基础方法:加号连接多个字符串 eg:

    salary = input('请输入薪资:') # 计算出缴税额,存入变量tax tax = int(salary) *25/100 # 转化为字符串,方便下面的字符串拼接 taxStr = str(tax) # 计算出税后工资,存入变量aftertax aftertax = int(salary) *75/100 # 转化为字符串,方便下面的字符串拼接 aftertaxStr = str(aftertax) print('税前薪资是:' + salary + '元, 缴税:' + taxStr + '元, 税后薪资是:' + aftertaxStr + '元')

    二、printf 风格方法

    print('税前薪资:%s元,缴税:%s元,税后薪资:%s元' %(salary,tax,aftertax))

    %s 是一种格式化符号, Python 解释器 看到 %s , 就会调用内置函数 str(),并将对应的 格式化对象 作为 参数传入 , 返回的结果字符串填入对应占位符。 %s 为占位符, 对应的格式化对象, 不仅仅是字符串,还可以是整数、 浮点数、列表、元组 等 %d 和 %f用途: 1、%d

    打印数字的时候,我们指定宽度,而且希望不足宽度 补零 ,而不是补空格,就可以这样 '税前薪资:%010d 元' % 100000 '税前薪资:%010d 元' % 10000 '税前薪资:%010d 元' % 1000 可以得到如下结果 税前薪资:0000100000 元 税前薪资:0000010000 元 税前薪资:0000001000

    2、%f

    对于小数的格式化,通常使用 %f,如下 '税前薪资:%010f 元' % 1000.4522 '税前薪资:%010f 元' % 1008.6621 '税前薪资:%010f 元' % 1009.3351 可以得到如下结果 税前薪资:1000.452200 元 税前薪资:1008.662100 元 税前薪资:1009.335100 元 保留小数点后面2位数字,就可以加上 .2 像这样 '税前薪资:%010.2f 元' % 1000.4522 '税前薪资:%010.2f 元' % 1008.6621 '税前薪资:%010.2f 元' % 1009.3351 可以得到如下结果 税前薪资:0001000.45 元 税前薪资:0001008.66 元 税前薪资:0001009.34

    三、f-string 格式化(Python解释器是3.6 以后的版本)

    print(f'税前薪资是:{salary}元, 缴税:{tax}元, 税后薪资是:{aftertax}元')

    1、指定宽度

    >>> salary = 10000 >>> print(f'{salary:10}') 10000

    2、左对齐 {salary:<8}

    print(f'税前薪资是:{salary:<8}元, 缴税:{tax:<8}元, 税后薪资是:{aftertax:<8}元') 运行结果如下: 税前薪资是:8320 元, 缴税:2080.0 元, 税后薪资是:6240.0

    3、小数点后位数 {salary:<8.1f}后面的.1f就表示小数点后面保留1位。

    print(f'税前薪资是:{salary:8.1f}元, 缴税:{tax:8.1f}元, 税后薪资是:{aftertax:8.1f}元') 运行结果如下: 税前薪资是: 8320.0元, 缴税: 2080.0元, 税后薪资是: 6240.0

    4、不足补零

    print(f'税前薪资是:{salary:08}元, 缴税:{tax:08.1f}元, 税后薪资是:{aftertax:08.1f}元') calcTax(8320) 运行结果如下: 税前薪资是:00008320元, 缴税:002080.0元, 税后薪资是:006240.0

    四、转义符

    a = 'abcd\nefg'

    \n 是一个转义字符,表示一个换行字符; 如果字符串中本身需要有反斜杠,并非转义,比如Windows下面的路径 path = ‘c:\windows\temp’ 其中的 \t 会被当做一个tab字符,而不是 \ 和 t 两个字符。这时,可以在在前面再加一个反斜杠, 像下面这样

    path = 'c:\\windows\\temp'

    也可以在字符前面加上一个 r ,表示字符串内容是raw string, 无需转义,像这样

    path = r'c:\windows\temp'
    Processed: 0.010, SQL: 9