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

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,)。

# 通过占位的形式,完成拼接
name = "考研加油"
message = "同学们: %s" % name
print(message)

# 通过占位的形式,完成数字和字符串的拼接
class_num = 1
avg_salary = 16781
message = "Python大数据学科,北京%s期,毕业平均工资: %s" % (class_num,avg_salary)
print(message)

name="传智播客"
setup_year = 2006
stock_price = 19.99
message = "%s, 成立于: %d,我今天的股价是: %f" % (name, setup_year, stock_price)
print(message)

2.format()

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

  • format()的常用用法
# 使用名称占位符
s2 = "xxxx {age} xxxx {name}".format(age=18, name="hangman")
print(s2)  # xxxx 18 xxxx hangman

# 使用序号占位符,为空默认从左到右01234.。。
s3 = "xxxx {1} xxx{0}".format(value1,value2)
print(s3)  # xxxx [9, 0] xxx(7, 8)

# 也可以混合使用
s4 = "xxxx {} XXX {name} xxx {}".format(value2,value1,name="s4")
print(s4)  # xxxx [9, 0] XXX s4 xxx (7, 8)

 代码展示:

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

2.字符串格式化练习题

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

print(f"公司: {name},股票代码: {stock_code},当前股价:{stock_price}")
print("每日增长系数: %.1f,经过%d天的增长后,股价达到了:%.2f" % (stock_price_daily_growth_factor, growth_days,finally_stock_price))

3.总结

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

你可能感兴趣的:(python,python)