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安全,适合用户输入功能最少用户可控模板

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/78530.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/78530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】缓存|缓存的更新策略|内存淘汰策略|缓存预热、缓存穿透、缓存雪崩和缓存击穿

思维导图&#xff1a; Redis最主要的用途&#xff0c;三个方面&#xff1a; 1.存储数据&#xff08;内存数据库&#xff09; 2.缓存&#xff08;redis最常用的场景&#xff09; 3.消息队列 一、什么是缓存 我们知道对于硬件的访问速度来说&#xff0c;通常情况下&#xff1…

中阳视角下的趋势确认策略:以数据为核心的交易思维

中阳视角下的趋势确认策略&#xff1a;以数据为核心的交易思维 在动态交易市场中&#xff0c;如何在波动中捕捉相对确定的趋势&#xff0c;是每一位操作者关心的问题。“中阳”理念主张通过结构性价格分析&#xff0c;判断市场情绪的拐点。尤其是在出现大阳线或中阳线时&#x…

【C/C++】inline关键词

C inline 关键字学习笔记 一、什么是 inline 函数&#xff1f; inline&#xff08;内联&#xff09;是 C 中的一个关键字&#xff0c;表示“将函数的代码直接插入到调用点”&#xff0c;以减少函数调用开销&#xff0c;提升执行效率。 ✅ 注意&#xff1a;inline 是一种“请求…

React useMemo函数

第一个参数是回调函数&#xff0c;返回计算的结果&#xff0c;第二个参数是依赖项&#xff0c;该函数只监听count1变量的变化 import { useReducer, useState } from react; import ./App.css;// 定义一个Reducer函数 根据不同的action进行不同的状态修改 function reducer(st…

对比测评:为什么AI编程工具需要 Rules 能力?

通义灵码 Project Rules 在开始体验通义灵码 Project Rules 之前&#xff0c;我们先来简单了解一下什么是通义灵码 Project Rules&#xff1f; 大家都知道&#xff0c;在使用 AI 代码助手的时候&#xff0c;有时候生成的代码不是自己想要的&#xff0c;或者说生成的代码采纳后…

Java学习手册:MyBatis 框架作用详解

一、MyBatis 简介 MyBatis 是一款优秀的持久层框架&#xff0c;用于简化 JDBC 开发。它通过将 Java 对象与数据库表之间的映射关系进行配置&#xff0c;使得开发者可以使用简单的 SQL 语句和 Java 代码来完成复杂的数据操作。MyBatis 支持自定义 SQL 语句&#xff0c;提供了灵…

list的设计

#pragma once #include<assert.h> #include<iostream> using namespace std; namespace aqc {template<class T>struct list_node{list_node* _next;list_node* _prev;T _data;list_node(const T& xT())//加const防止权限放大&#xff0c;用引用减少拷贝…

基于 PyQt 的YOLO目标检测可视化界面+ nuitka 打包

在人工智能和计算机视觉领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;是一种广泛使用的实时目标检测算法。为了直观地展示YOLO算法的检测效果&#xff0c;我们使用Pyqt框架进行检测结果的可视化&#xff0c;同时为了使其能够脱离Python环境&#xff0c;我们…

2.1 阅读错题---02-04年

引言 2002年-2004年英语阅读错题汇总与分析总结。 一、02年阅读 Text 1 题目&#xff1a;21题 题型&#xff1a;细节题 原因&#xff1a;单词认错了&#xff0c;原句中 in sympathy with 译为 与…一致 &#xff1b;题干中的 sympathy 译为 同情 题目&#xff1a;22题 题…

Axure疑难杂症:中继器制作下拉菜单(多级中继器高级交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 本文视频课程记录于上述地址第五章中继器专题第11节 课程主题:中继器制作下拉菜单 主要内容:创建条件选区、多级中继器…

即刻启程,踏上W55MH32高性能以太网单片机学习之路!

单芯片解决方案&#xff0c;开启全新体验——W55MH32 高性能以太网单片机 W55MH32是WIZnet重磅推出的高性能以太网单片机&#xff0c;它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身&#xff0c;具体来说&#xff0c;一颗W55MH32内置高性能Arm Cortex-M3核心…

C++负载均衡远程调用学习之上报功能与存储线程池

目录 1. Lars-reportV0.1 report模块介绍 2.Lars-reporterV0.1 reporter项目目录构建 3.Lars-ReporterV0.1 数据表和proto协议环境搭建 4.Lars-ReporterV0.1上报请求业务处理 5.Lars-ReporterV0.1上报请求模块的测试 6.Lars-ReporterV0.2开辟存储线程池-网络存储分离 1. L…

LabVIEW三轴电机控制

在工业自动化迅猛发展的当下&#xff0c;多轴伺服电机控制系统在制造业、3D 打印等众多领域的需求与日俱增。它不仅要实现高精度的单轴运动控制&#xff0c;还需保障多轴协同作业的精准度&#xff0c;对响应速度也有严格要求。LabVIEW 开发多轴伺服电机控制系统&#xff0c;有效…

驱动开发硬核特训 · Day 27(下篇):深入掌握 Common Clock Framework 架构与实战开发

节。 在本篇内容中&#xff0c;我们将围绕 Linux 内核中的时钟子系统核心架构 —— Common Clock Framework&#xff08;简称 CCF&#xff09;展开深入讲解&#xff0c;目标是帮助你全面理解其设计理念、主要数据结构、注册流程、驱动实现方式&#xff0c;以及如何基于 NXP i.M…

数据库基础:数据库类型与MySQL特点详解

一、数据库的主要类型 1. 关系型数据库(RDBMS) 特点:基于关系模型,数据以表格形式存储 代表产品:MySQL、Oracle、SQL Server、PostgreSQL 优势:ACID事务支持、强一致性、成熟的SQL标准 适用场景:需要复杂查询和事务支持的场景 2. 非关系型数据库(NoSQL) 文档型数据库:Mo…

49认知干货:产品的生命周期及类型汇总

49章:产品的生命周期与类型划分 宇宙是运动的而非静止的,任何事物亦是如此。只要是存在的事物,便必然存在周期性变化,就像四季更替中的冬日枯树、春日新芽、夏日繁茂与秋日凋零。 这也意味着:事物的发展,离不开周期的更迭与演化,死亡并非终点,而是一种新的循环转变。 …

【2025最新】为什么用ElasticSearch?和传统数据库MySQL与什么区别?

Elasticsearch 深度解析&#xff1a;从原理到实践 一、为什么选择 Elasticsearch&#xff1f; 数据模型 Elasticsearch 是基于文档的搜索引擎&#xff0c;它使用 JSON 文档来存储数据。在 Elasticsearch 中&#xff0c;相关的数据通常存储在同一个文档中&#xff0c;而不是分散…

Docker安装Gitblit(图文教程)

本章教程,使用Docker安装部署Gitblit。 一、Gitblit简介 Gitblit 是一个基于 Java 的 Git 仓库管理工具,主要用于在局域网或小型团队环境中搭建私有 Git 服务器。它提供了一个简单易用的 Web 界面,用于浏览代码、管理仓库和用户权限等。 二、拉取镜像 sudo docker pull git…

nDCG(归一化折损累计增益) 是衡量排序质量的指标,常用于搜索引擎或推荐系统

nDCG&#xff08;归一化折损累计增益&#xff09; 是衡量排序质量的指标&#xff0c;常用于搜索引擎或推荐系统。核心思想是&#xff1a;排名越靠前的高质量结果&#xff0c;对整体评分的贡献越大&#xff0c;但后续结果的贡献会逐渐“打折”。最终通过对比实际排序与理想排序的…

《从线性到二维:CSS Grid与Flex的布局范式革命与差异解析》

在前端开发的广袤宇宙中&#xff0c;CSS布局技术宛如闪耀的星辰&#xff0c;不断革新与演进&#xff0c;为构建绚丽多彩的网页世界提供了坚实的支撑。其中&#xff0c;CSS Grid布局与Flex布局作为两颗璀璨的明星&#xff0c;以其独特的魅力和强大的功能&#xff0c;深受开发者们…