当前位置:   article > 正文

python格式化字符串的三种方法(%,format,f-string)

python格式化字符串

1.%格式化字符串

        %格式化字符串是python最早的,也是能兼容所有版本的一种字符串格式化方法,在一些python早期的库中,建议使用%格式化方式,他会把字符串中的格式化符按顺序后面参数替换,格式是:

"xxxxxx %s xxxxxx" % (value1, value2)

1.其中 %s就是格式化符,意思是把后面的值格式化为字符类型,类似的格式化符还有%d,%f等,具体参考文章Python字符串格式化。
2.后面的value1,value2就是要格式化的值,不论是字符还是数值,都会被格式化为格式化符对应的类型。
3.当然可以不用以元组的形式传值,你可以直接写这样:"xxxxx %s" % value,不过不建议这样写,一是应为这样只能传递一个参数,二是如果value是元组或列表等类型,这样会触发TypeErrer。
4.如果只传一个参数,并且很确定参数类型不会触发异常,可以使用上面的写法,否则,我建议你提供一个单元素元组,就像"xxxx %s " % (value,)。

  1. # 通过占位的形式,完成拼接
  2. name = "考研加油"
  3. message = "同学们: %s" % name
  4. print(message)
  5. # 通过占位的形式,完成数字和字符串的拼接
  6. class_num = 1
  7. avg_salary = 16781
  8. message = "Python大数据学科,北京%s期,毕业平均工资: %s" % (class_num,avg_salary)
  9. print(message)
  10. name="传智播客"
  11. setup_year = 2006
  12. stock_price = 19.99
  13. message = "%s, 成立于: %d,我今天的股价是: %f" % (name, setup_year, stock_price)
  14. print(message)

2.format()

       %虽然强大,但用起来难免有些麻烦,代码也不是特别美观,因此,在python 2.5 之后,提供了更加优雅的str.format()方法。

  • format()的常用用法
  1. # 使用名称占位符
  2. s2 = "xxxx {age} xxxx {name}".format(age=18, name="hangman")
  3. print(s2) # xxxx 18 xxxx hangman
  4. # 使用序号占位符,为空默认从左到右01234.。。
  5. s3 = "xxxx {1} xxx{0}".format(value1,value2)
  6. print(s3) # xxxx [9, 0] xxx(7, 8)
  7. # 也可以混合使用
  8. s4 = "xxxx {} XXX {name} xxx {}".format(value2,value1,name="s4")
  9. print(s4) # xxxx [9, 0] XXX s4 xxx (7, 8)

 代码展示:

  1. name ="传智播客"
  2. set_up_year = 2006
  3. stock_price = 19.99
  4. # f: format
  5. print(f"我是{name},我成立于:{set_up_year}年,我今天的股价是: {stock_price}")
  1. print("1 *1 的结果是:%d" % (1 * 1))
  2. print(f"1 *2的结果是:{1 * 2}")
  3. print("字符串在Python中的类型名是:%s" % type("字符串"))

2.字符串格式化练习题

股价计算小程序
定义如下变量:
.name,公司名
stock_price,当前股价 stock_code,股票代码
.stock_price_daily_growth_factor,股票每日增长系数,浮点数类型,比如1.2.growth_days,增长天数
计算,经过growth_days天的增长后,股价达到了多少钱
使用字符串格式化进行输出,如果是浮点数,要求小数点精度2位数。
  1. # 定义需要的变量
  2. name = "传智播客"
  3. stock_price = 19.99
  4. stock_code = "003032"
  5. # 股票价格每日增长因子
  6. stock_price_daily_growth_factor = 1.2
  7. growth_days = 7
  8. finally_stock_price = stock_price * stock_price_daily_growth_factor ** growth_days
  9. print(f"公司: {name},股票代码: {stock_code},当前股价:{stock_price}")
  10. print("每日增长系数: %.1f,经过%d天的增长后,股价达到了:%.2f" % (stock_price_daily_growth_factor, growth_days,finally_stock_price))

3.总结

       python最先的格式化字符串方法是%,但他的致命缺点是支持的类型有限,只支持int,str,double,其他所有类型只能转换为这几个类型,还有如果传递的是元组,那么必须还要传入一个单值元组,为此,添加了str.format()以解决%-formatting中的一些问题,特别是,它使用普通函数调用语法(并因此支持多个参数),并且可以通过__format __()方法在被转换为字符串的对象上进行扩展。
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/1018822
推荐阅读
相关标签
  

闽ICP备14008679号