Python 格式化输出:精确控制你的数据表示

     

目录

旧式的 % 运算符(不推荐)

str.format() 方法

位置和关键字参数:

格式化数字:

f-string

表达式和函数调用:

格式化数字:

格式规范的微调 (核心)

对齐字符串

填充字符

数字的零填充

数字的千位分隔符

格式化十六进制、八进制和二进制


        在编程语言中,格式化输出是一个非常重要的功能,它允许程序员以可读和美观的方式展示信息。Python 提供了多种方法来格式化字符串,控制数据的显示方式。Python 中的格式化输出,主要包括旧式的 % 格式化、str.format() 方法和 f-string。

旧式的 % 运算符(不推荐)

% 运算符是 Python 早期版本的字符串格式化方法。它使用类似于 C 语言中 printf() 的语法。

name = "John"
age = 30
print("Hello, %s. You are %d years old." % (name, age))
# 输出:Hello, John. You are 30 years old.

str.format() 方法

        随着 Python 2.6 的发布,str.format() 方法被引入,它提供了一种更强大和灵活的字符串格式化方式。

name = "John"
age = 30
print("Hello, {}. You are {} years old.".format(name, age)

   str.format() 方法可以指定占位符 {},而不用关心数据类型。你还可以通过位置或关键字参数来引用特定的值。

位置和关键字参数:

print("Hello, {0}. You are {1} years old.".format(name, age)) # 位置参数 
print("Hello, {name}. You are {age} years old.".format(name="Alice", age=24)) # 关键字参数

格式化数字:

pi = 3.14159 
print("Pi is approximately {0:.2f}".format(pi)) # 保留两位小数

f-string

        在 Python 3.6 中,引入了一种新的字符串格式化方法,称为 f-string(格式化字符串字面量)。f-string 提供了一种更简洁和易读的方式来格式化字符串。

name = "John"
age = 30
print(f"Hello, {name}. You are {age} years old.")

表达式和函数调用:

print(f"Twenty times two is {20 * 2}")
# 输出:Twenty times two is 40

格式化数字:

pi = 3.14159 
print(f"Pi is approximately {pi:.2f}")

格式规范的微调 (核心)

对齐字符串

        字符串在输出时可以进行左对齐、右对齐和居中对齐。使用 str.format() 方法或 f-string,可以通过在冒号 : 之后添加对齐符号 <>^ 来实现。

代码示例:

# 左对齐 
print(f"|{'left':<10}|") # 宽度为 10 的字段中左对齐 
print("|{:<10}|".format("left")) 
# 右对齐 
print(f"|{'right':>10}|") # 宽度为 10 的字段中右对齐 
print("|{:>10}|".format("right")) 
# 居中对齐 
print(f"|{'center':^10}|") # 宽度为 10 的字段中居中对齐 
print("|{:^10}|".format("center"))

输出结果:

|left      |
|left      |
|     right|
|     right|
|  center  |
|  center  |

填充字符

        在对齐时,可以指定一个字符来填充对齐后剩余的空间。填充字符被放置在对齐字符 <>^ 的前面。

代码示例:

# 使用星号 (*) 填充字符
print(f"|{'left':*<10}|")   # 使用 * 填充左对齐的剩余空间
print("|{:*<10}|".format("left"))print(f"|{'right':*>10}|")  # 使用 * 填充右对齐的剩余空间
print("|{:*>10}|".format("right"))print(f"|{'center':*^10}|") # 使用 * 填充居中对齐的剩余空间
print("|{:*^10}|".format("center"))

输出结果:

|left******|
|left******|
|*****right|
|*****right|
|**center**|
|**center**|

数字的零填充

        对于数字类型,零填充(0-padding)常用于保持数字的固定显示宽度。在指定宽度前添加 0 可以进行零填充。

代码示例:

# 数字的零填充
number = 42
print(f"|{number:0>10}|")  # 宽度为 10,右对齐,使用 0 填充
print("|{:0>10}|".format(number))# 使用格式化浮点数,保留两位小数,并进行零填充
float_number = 3.14159
print(f"|{float_number:0>10.2f}|")  # 宽度为 10,保留两位小数,右对齐,使用 0 填充
print("|{:0>10.2f}|".format(float_number))

输出结果:

|0000000042|
|0000000042|
|00000003.14|
|00000003.14|

数字的千位分隔符

        为了提高大数字的可读性,可以在数字中添加千位分隔符。

代码示例:

# 数字的千位分隔符
number = 1234567890
print(f"{number:,}")  # 使用逗号作为千位分隔符
print("{:,}".format(number))

输出结果:

1,234,567,890
1,234,567,890

格式化十六进制、八进制和二进制

        数字可以被格式化为十六进制、八进制或二进制表示。

代码示例:

# 十六进制
number = 255
print(f"{number:#x}")  # 输出: 0xff
print("{:#x}".format(number))# 八进制
print(f"{number:#o}")  # 输出: 0o377
print("{:#o}".format(number))# 二进制
print(f"{number:#b}")  # 输出: 0b11111111
print("{:#b}".format(number))

输出结果:

0xff
0xff
0o377
0o377
0b11111111
0b11111111

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

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

相关文章

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑥

单元测试 一、任务要求 题目1&#xff1a;根据下列流程图编写程序实现相应分析处理并显示结果。返回结果“ax&#xff1a;”&#xff08;x为2、3或4&#xff09;&#xff1b;其中变量x、y均须为整型。编写程序代码&#xff0c;使用JUnit框架编写测试类对编写的程序代码进行测试…

Java基础 - 黑马

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 知…

第二十四章 $ZF Callout 快速参考 - $ZF()调用iriszf库

文章目录 第二十四章 $ZF Callout 快速参考 - $ZF()调用iriszf库$ZF()调用iriszf库$ZF() $ZF(-3): Call by Name$ZF(-3) 第二十四章 $ZF Callout 快速参考 - $ZF()调用iriszf库 $ZF()调用iriszf库 如果调用$ZF()时不带负数参数(例如&#xff0c;$ZF("myFunction "&…

剖析一下Mask R-CNN获得实例分割的这三个步骤。第一步,利用先验框获得建议框。第二步,利用建议框获得预测框。第三步,利用预测框获得语义分割结果。

问题描述&#xff1a; 剖析一下Mask R-CNN获得实例分割的这三个步骤。第一步&#xff0c;利用先验框获得建议框。第二步&#xff0c;利用建议框获得预测框。第三步&#xff0c;利用预测框获得语义分割结果。 问题解答&#xff1a; 生成建议框&#xff08;Region Proposal&…

Linux IDEA 安装及环境配置

Linux系统安装IDEA保姆级教程_linux安装idea-CSDN博客 下载tar.gz解压缩添加环境变量&#xff1a; vim ~/.bashrc export IDEA_HOME/usr/local/src/idea/idea-IC-213.6777.52 export PATH:$PATH:${IDEA_HOME}/bin source ~/.bashrc验证环境&#xff1a;echo $PATH即可在任意目录…

使用MATLAB连接USRP

文章目录 前言一、本地环境二、前期准备1、MATLAB版本、labview版本、UHD 版本对应关系2、下载 GNU Radio Companion3、确定 USRP UHD 版本①、下载一个 USRP 硬件驱动程序②、确认 MATLAB 的 UHD 版本 三、下载 USRP 通信工具箱支持包四、使用 MATLAB 连接 USRP 前言 本文记录…

基于opencv的直线检测(pythonC++)

提供了直线检测python与C版本&#xff0c;用于检测竖直线与横线&#xff0c;主要流程为&#xff1a;图像二值化Canny边缘检测霍夫直线变换直线检测 一、python实现 import shutilimport osimport cv2 import numpy as npfilename "20230525-173637.jpg" file_ext …

F-Droid:开源Android应用的宝库

F-Droid&#xff1a;开源Android应用的宝库 引言 F-Droid是一个开源应用程序存储库&#xff0c;旨在为安卓用户提供自由、隐私和安全的应用程序。它最初于2010年由Ciaran Gultnieks创建&#xff0c;因为他认为Google Play Store上的应用程序不够透明和安全。F-Droid的目标是为…

Web3与环保:区块链如何推动可持续发展

随着气候变化和环境问题日益严峻&#xff0c;社会对可持续发展的需求变得愈发迫切。在这个背景下&#xff0c;Web3技术和区块链崭露头角&#xff0c;成为推动可持续发展的关键力量。本文将深入探讨Web3技术如何与环保理念相结合&#xff0c;引领我们迈向更加可持续的未来。 1. …

AtCoder Beginner Contest 336 D - Pyramid

题目链接 题意&#xff1a;就是给你一个长为n的序列&#xff0c;让你通过两种不限次数的操作 使其变为金字塔序列&#xff0c;(a1<a2<ak>ak-1>ak-2...>an) 两种操作分别是1&#xff1a;让任何一个数减一&#xff1b;2&#xff1a;去掉队头队尾 其实我们想这和…

每日一题——LeetCode1200.最小绝对差

方法一 个人方法 排序一次遍历&#xff1a; 最小差值一定是出现在大小相邻的两个元素之间&#xff0c;所以将数组从小到大排序 循环求两元素之间的差值&#xff0c;先假设当前差值为最小差值&#xff0c;先往res数组里面push数据&#xff0c;当碰到更小差值的时候&#xff0c…

VS 中调用调试DLL库的方法

前提条件&#xff1a; 1、当前代码是最新的&#xff0c;并且编译成dll的库有程序使用。 2、打开运行dll库的程序。 配置步骤&#xff1a; 1、使用VS打开要调试的dll库项目。 2、点击调试菜单展开调试菜单。 3、点击附加到进程&#xff0c;弹出配置框。 4、在配置框中选…

学习笔记-数据库概念介绍

一.数据库概述 1.数据库: 存储数据的仓库,本质是一个文件系统. 用户可以对数据库中的数据进行 增加,修改,删除以及查询操作 2.特点 可以结构化存储大量的数据可以有效的保持数据的一致性,完整性读写效率高 3.常用数据库 二.数据库分类及其常用 关系型数据库 指的是二维表格…

【51单片机系列】51单片机的中断系统使用总结一

本文是在学习51单片机的中断系统的简单性总结&#xff0c;着重于51单片机的中断系统的工作原理及如何使用。 文章目录 一、中断原理简单介绍二、 外部中断相关介绍2.1 与外部中断相关的寄存器2.2、外部中断0使用示例2.3、外部中断1使用示例 三、定时器中断相关介绍3.1、51单片机…

基于Ubuntu22.04部署生产级K8S集群v1.27(规划和核心组件部署篇)

本文档主要根据k8s官网文档和其插件的官网文档&#xff0c;参考部分他人优秀经验&#xff0c;在实际操作中逐渐完成&#xff0c;比较详尽&#xff0c;适合在境内学习者和实践者参考。 实操环境基于VMware Workstation 17 pro&#xff0c;采用ubuntu22.04操作系统&#xff08;有…

链接全域直播产业经济,天府锋巢直播产业基地10层正式起航

100㎡-400㎡多种类型的办公户型可选 精装全包 拎包入驻 【天府锋巢直播基地】 由德商产投与无锋科技联袂打造 坐落于天府新区核心区域科学城板块 包含电商直播、娱乐直播、跨境直播 多种直播业态的全域直播基地 基地【10层】于12月初全面竣工 招&#xff5c;商 &#xff5c;火&…

中小企业如何做好信息化规划?

中小企业需不需要做信息化规划&#xff1f;什么时候做信息化规划比较好&#xff1f; 企业的信息化规划&#xff0c;一定是越早越好&#xff0c;越快越好。 因为信息化是一个过程&#xff0c;不是一个结果&#xff0c;它不是一天完成的事情&#xff0c;而是贯穿着企业经营管理…

鸿蒙应用开发学习:让page页面强制横屏

一、学习做了个适合横屏的页面但进入页面后是竖屏显示的 前几天在B站上跟着 黑马程序员的 HarmonyOS4.0开发应用教学视频学习了显式动画&#xff08;animateTo&#xff09;和属性动画&#xff08;animation&#xff09;功能&#xff0c;并参照教学视频的内容做了个小鱼动画。…

瑞_Java开发手册_(五)MySQL数据库

文章目录 (一) 建表规约(二) 索引规约(三) SQL 语句(四) ORM 映射附&#xff1a;雪花算法&#xff08;Java&#xff09; &#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的MySQL数据库篇&#xff0c;主要介绍建表规约、索引规约、SQL语句、ORM映射。由于博…

力扣hot100 路径总和Ⅲ dfs 前缀和 一题双解 超全注释

Problem: 437. 路径总和 III 思路 树的遍历 DFS 一个朴素的做法是搜索以每个节点为根的&#xff08;往下的&#xff09;所有路径&#xff0c;并对路径总和为 targetSumtargetSumtargetSum 的路径进行累加统计。 使用 dfs1 来搜索所有节点&#xff0c;复杂度为 O(n)O(n)O(n)&am…