当前位置: 首页 > news >正文

Python格式化字符串的四种方法

Python格式化字符串的四种方法

1.使用 % 运算符

  • %s 是一个字符串的占位符,而 “World” 是替换它的值

    print("Hello, %s!" % "World")  # 输出:Hello, World!
    
  • 你可以使用多个占位符

    注意:多个变量占位,变量要用括号括起来,并按照占位的顺序填入

    name = "小孤独"
    age = 16
    print("My name is %s and I am %s years old." % (name, age))
    # 输出:My name is 小孤独 and I am 16 years old.
    
  • Python中支持非常多的数据类型占位,最常用的如下:

    格式符号转化
    %s将内容转换成字符串,放入占位位置
    %d将内容转换成整数,放入占位位置
    %f将内容转换成浮点型,放入占位位置

    示例:

    name ="小孤独"
    age = 16
    height = 1.56
    message ="我是%s,我的年龄是:%d,我的身高是:%f米" %(name, age, height)
    print(message)
    # 输出:我是:小孤独,我的年龄是:16,我的身高是:1.560000米
    

2.str.format() 方法

  • Python 2.6+ 引入的更灵活的格式化方法,使用 {} 作为占位符

  • 基本用法:

    print("Name: {}, Age: {}".format("小孤独", 16))          # 位置参数
    print("Name: {1}, Age: {0}".format(16, "小孤独"))        # 索引参数
    print("Name: {name}, Age: {age}".format(name="小孤独", age=16))  # 关键字参数
    
  • 格式控制:

    # 数字格式化
    print("PI: {:.2f}".format(3.14159))  # 输出:PI: 3.14(保留两位小数)
    print("Hex: {:x}".format(255))       # 输出:Hex: ff(十六进制)# 对齐与填充
    print("{:>10}".format("Hello"))      # 右对齐,宽度10 → '     Hello'
    print("{:<10}".format("Hello"))      # 左对齐,宽度10 → 'Hello     '
    print("{:*^10}".format("Hi"))        # 居中并用*填充 → '****Hi****'# 千位分隔符
    print("{:,}".format(1000000))        # 输出:1,000,000
    
  • 引用对象属性或元素:

    person = {"name": "小孤独", "age": 16}
    print("Name: {p[name]}, Age: {p[age]}".format(p=person))  # 输出:Name: 小孤独, Age: 16
    

3.f-strings(格式化字符串字面量)

  • Python 3.6+ 引入,语法简洁高效,在字符串前加 fF,变量直接嵌入 {}

  • 基本用法:

    name = "小孤独"
    age = 16
    print(f"Name: {name}, Age: {age}")  # 输出:Name: 小孤独, Age: 16
    
  • 表达式和函数调用:

    name = "xiaogudu"
    age = 16
    # 直接计算表达式
    print(f"Next year's age: {age + 1}")  # 输出:Next year's age: 17# 调用方法或函数
    print(f"Name in uppercase: {name.upper()}")  # 输出:Name in uppercase: XIAOGUDU
    
  • 高级格式控制:

    pi = 3.14159
    print(f"PI: {pi:.2f}")               # 输出:PI: 3.14
    print(f"Hex: {255:x}")               # 输出:Hex: ff
    print(f"Aligned: {'text':>10}")      # 输出:Aligned:       text
    
  • 多行字符串:

    name = "小孤独"
    age = 16
    message = (f"Name: {name}\n"f"Age: {age}\n"f"Square of Age: {age ** 2}"
    )
    print(message)  
    # 输出:Name: 小孤独
    # Age: 16
    # Square of Age: 256
    

4.模板字符串(string.Template

  • Python 标准库中的简单模板,通过 $ 占位符替换,适合用户可控的输入(避免安全风险)

    from string import Template
    t = Template("Name: $name, Age: $age")
    print(t.substitute(name="小孤独", age=16))  # 输出:Name: 小孤独, Age: 16
    

5.总结对比:

方法优点缺点适用场景
% 格式化简单,兼容旧代码功能有限,易出错旧项目或简单替换
str.format()功能强大,支持复杂格式语法稍冗长需要兼容 Python 2.6+
f-strings简洁高效,支持表达式仅限 Python 3.6+现代 Python 代码首选
string.Template安全,适合用户输入功能最少用户可控模板

如有不当之处,欢迎批评指正!

相关文章:

  • Web Workers 技术详解与最佳实践
  • 【STM32 学习笔记】GPIO输入与输出
  • C++初学者的入门指南
  • Nginx核心功能2
  • 初始AI大模型-起源和发展
  • 解决DNS劫持问题
  • 7400MB/s5050TBW完美结合,全新希捷酷玩530R SSD体验评测
  • 【KWDB 创作者计划】_Ubuntu 22.04系统KWDB数据库安装部署使用教程
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM(一)
  • 生成式AI服务内容被滥用的法律责任划分
  • 掌纹图像识别:解锁人类掌纹/生物识别的未来——技术解析与前沿数据集探索
  • 如何快速获取字符串的UTF-8或UTF-16编码二进制数据?数值转换成字符串itoa不是C标准?其它类型转换成字符串?其它类型转换成数值类型?
  • Java学习手册:Hibernate/JPA 使用指南
  • Python 矩阵运算:从理论到实践
  • 免费开源又全能,文件对比需求选他
  • (即插即用模块-Attention部分) 六十五、(2024 WACV) DLKA 可变形大核注意力
  • 方法:批量识别图片区域文字并重命名,批量识别指定区域内容改名,基于QT和阿里云的实现方案,详细方法
  • GGD独立站的优势
  • 如何判断cgroup的版本?
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.3 数据脱敏与安全(模糊处理/掩码技术)
  • 巴基斯坦军方:印度导弹袭击已造成至少3死14伤
  • 中国公民免签赴马来西亚的停留天数如何计算?使馆明确
  • 许昌市场监管部门对胖东来玉石开展日常检查:平均毛利率不超20%
  • 在海拔3980米驻守:“全国先进工作者”刘鹏与洛戈梁子警务站的9年
  • 《开始推理吧3》:演员没包袱,推理更共情
  • 局势紧张之际,伊朗外长下周访问巴基斯坦和印度