Python中%的含义与用法详解:模运算与字符串格式化

Luna
Luna
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍Python中百分号%的两种主要用途:数值模运算与字符串格式化。通过具体代码示例,讲解如何获取余数以及利用%s、%d等占位符进行字符串拼接,涵盖宽度、精度及对齐方式等格式化参数设置。

在Python中,百分号%主要有两种常见用途。

第一种用法是数值运算,例如1 % 3表示模运算,即取余数(remainder)。

>>> 7%2 1

# -*- coding: utf-8 -*-
'''
python读取文件,偶数行输出一个文件,奇数行输出一个文件
'''
def fenhang(infile,outfile,outfile1):
 
  infopen = open(infile,'r',encoding='utf-8')
  outopen = open(outfile,'w',encoding='utf-8')
  outopen1 = open(outfile1, 'w', encoding='utf-8')
  lines = infopen.readlines()
  i = 0
  for line in lines:
    i += 1
    if i % 2 == 0:
      outopen.write(line)
    else:
      outopen1.write(line)
  infopen.close()
  outopen.close()
fenhang("源文件路径","偶行数文件路径","奇行数文件路径")

具体参考文章:https://www.jb51.net/article/136704.htm

第二种用法是字符串操作,例如'abc %s' % 'abc',其中%s类似于占位符,用于字符串格式化。

这里涉及%操作符(字符串格式化,string formatting),其语法结构如下: %[(name)][flags][width].[precision]typecode 其中(name)表示命名参数。 flags可选值包括+、-、' '或0。+表示右对齐,-表示左对齐,' '表示在正数左侧填充空格以与负数对齐,0表示使用0填充。 width表示显示宽度。 precision表示小数点后的精度。

以下是常见的类型码: %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d 十进制整数 %i 十进制整数 %o 八进制整数 %x 十六进制整数 %e 指数 (基底写为e) %E 指数 (基底写为E) %f 浮点数 %F 浮点数,与上相同%g 指数(e)或浮点数 (根据显示长度) %G 指数(E)或浮点数 (根据显示长度) %% 字符"%"

以下举例说明。

>>> print("%6.3f" % 2.3)
 2.300 

# 第一个"%"后面的内容为显示的格式说明,6为显示宽度,3为小数点位数,f为浮点数类型 # 第二个"%"后面为显示的内容来源,输出结果右对齐,2.300长度为5,故前面有一空格

>>> print("%+10x" % 10)
    +a

# x为表示16进制,显示宽度为10,前面有8个空格

>>>print("%-5x" % -10)
-a  

# "%-5x" 负号为左对齐,显示宽度为5,故-a后面有3个空格

>>>pi=3.1415
>>>print ("pi的值是%s"%pi)

pi的值是3.1415

>>>print ("pi的值是%.8f"%pi)
pi的值是3.14150000

上述的width和precision为两个整数。我们可以利用*来动态代入这两个量。例如:

>>> print("%10.*f" % (4, 1.2))
  1.2000

以下是补充说明。

简单来说,这是一种将其他变量置入字符串特定位置以生成新字符串的操作,例如:

n = "Aki"
"My name is %s" % n

这段代码首先定义了一个名为n的变量,内容为Aki。然后下方的字符串中有一个%s,其含义是“这里将被替换成一个新的字符串”,用作替换的内容放在字符串后面的%后面,即变量n。因此最终这个字符串会变成My name is Aki。

字符串中的%后面会附带一个字母,代表用来替换的变量的类型,例如%d代表整数,%s代表字符串。详细细节可参考:https://docs.python.org/2/library/stdtypes.html#string-formatting-operations。此外,这种操作可以同时将多个变量放进字符串,只需将变量用括号括起来。下面是一些例子。

>>> "www.%s.net" %("jb51")#字符串
'www.jb51.net'

>>> "%dkm"%1990#整数型
'1990km'

>>> "%s %d %f"%("abc",123,3.21)#多个值
'abc 123 3.210000'

在python3中

# -*- coding: UTF-8 -*-
print("www.%s.net") %("jb51")

输出 www.jb51.net

python中的%s%是什么意思

它是一个字符串格式化语法(它从C借用)。

请参阅 “格式化字符串”:

Python支持将值格式化为字符串。虽然这可以包括非常复杂的表达式,但最基本的用法是将值插入到%s 占位符的字符串中 。

编辑: 这是一个非常简单的例子:

该 %s 令牌允许我插入(和潜在的格式)的字符串。请注意, %s 令牌被替换为% 符号后传递给字符串的任何内容 。还要注意,我也在这里使用一个元组(当你只有一个使用元组的字符串是可选的)来说明可以在一个语句中插入和格式化多个字符串。 只是为了帮助您更多,以下是您如何在一个字符串中使用多种格式

如果您使用int而不是字符串,请使用%d而不是%s。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。