Python中的字符串格式化方法
有时候我们需要把一些变量填写到一个字符串中,如我们有3个变量
name="张三"
gender="男"
age="21"
假如我需要把它们放入以下字符串中。
"hi, 我叫 , 性别 , 年龄 "
- 拆分拼接
name="张三"
gender="男"
age=21
string = "hi, 我叫 " + name + ", 性别 "+ gender + ", 年龄 " + age
print(string)
输出格式如下:
hi, 我叫 张三, 性别 男, 年龄 21
当有多个变量时往往要拆开很多段,不推荐。一般我们采用字符串格式化的方法。
字符串格式化是在字符串中先埋设占位符,然后后面在依次或根据名称填上对应的变量值,占位符一般分为无名占位符和具名占位符。
%格式化,示例如下:#
string = "hi, 我叫 %s, 性别 %s, 年龄 %d" % ("张三", "男", 21) # %s表示字符串格式 %d表示数字格式
print(string)
# 具名占位符
string = "hi, 我叫 %(name)s, 性别 %(gender)s, 年龄 %(age)d" % {"name": "张三", "gender": "男", "age": 21}
print(string)
注意:使用%格式化,所有的占位符,后面的变量都要给出
输出格式如下:
hi, 我叫 张三, 性别 男, 年龄 21
hi, 我叫 张三, 性别 男, 年龄 21
使用字符串.format()
方法#
name="张三"
gender="男"
age="21"
string = "hi, 我叫 {}, 性别 {}, 年龄 {}".format(name, gender, age) # 使用{}或{数字}作为占位符
print(string)
string = "hi, 我叫 {name}, 性别 {gender}, 年龄 {age}".format(name=name, gender=gender, age=age)
print(string)
输出结果如下:
hi, 我叫 张三, 性别 男, 年龄 21
hi, 我叫 张三, 性别 男, 年龄 21
使用f字符串#
在字符串引号前加上f可以将已知变量快速填充到字符串中
name="张三"
gender="男"
age="21"
string = f"hi, 我叫 {name}, 性别 {gender}, 年龄 {age}"
print(string)
注: f字符串大括号中还支持表达式计算,如
{age+1}
输出结果如下:
hi, 我叫 张三, 性别 男, 年龄 21
格式化$变量#
from string import Template
string = "hi, 我叫 $name, 性别 $gender, 年龄 $age"
string = Template(string).safe_substitute(name="张三", gender="男", age=21)
print(string)
变量使用
$变量
或${变量}
都可以,使用safe_substitute()替换时,如果字符串中有些变量没有给出时保留原样。
输出结果如下:
hi, 我叫 张三, 性别 男, 年龄 21
使用jinja2#
使用三方包jinja2可以在模板中支持if判断,for循环等更加复杂的变量替换,安装方法如下:
pip install jinja2
from jinja2 import Template
string = 'hi, 我叫 {{name}},' \
'性别 {% if gender==1 %}男{% else %}女{% endif %},' \
'年龄 {{age}}, ' \
'爱好 {% for item in hobbies %}{{item}} {% endfor %}'
string = Template(string).render(name="张三", gender=1, age=21, hobbies=['篮球','足球', '乒乓球'])
print(string)
输出结果如下:
hi, 我叫 张三,性别 男,年龄 21, 爱好 篮球 足球 乒乓球
作者:韩志超
出处:https://www.cnblogs.com/superhin/p/python-format-string.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
如有问题,请微信联系 superz-han,并发送原文链接。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现
2019-10-18 Git项目代码统计-Python3版gitstats