news 2025/12/23 22:29:16

python 字符串拼接

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python 字符串拼接

Python 的str(字符串)是不可变的(immutable)。每次用+或其它方式“拼接**”都会创建新的字符串对象**,如果拼很多次,会造成很多临时对象,性能差。因此,少量拼接(比如几段)用+或 f-string 很方便;大量或循环里拼接应用''.join(...)或字符串缓冲(io.StringIO)或构建 list 再 join。

1.常用的字符串拼接方式

1 f-string(python3.6以上)-语法直观、速度快、能插入表达式与格式化。

name="Alice"age=30s=f"Name:{name}, Age:{age}"# 支持表达式、格式化#f-string 允许你在 {} 里面写任何能计算结果的东西#支持控制 显示出来的文字形式。如 小数保留几位?是否补零?是否右对齐 / 左对齐?pi=3.14159f"pi≈{pi:.2f}"# 'pi≈3.14'

补充一下:pi:.2----------format Specification(Python 格式化迷你语言)

部分含义
pi要格式化的变量
:.2f说明“我想把这个变量格式化成保留 2 位小数的浮点数”

其中:

:2f|||||└── 输出格式是float(浮点数)|└────── 保留2位小数 └────────── 表明后面是格式化指令

记录一下python 的讲解

在 Python 中,format_spec是格式化规范的一种表示,它提供了强大而灵活的字符串格式化功能。通过format_spec,我们可以精确控制数值、字符串等对象的输出格式,例如设置精度、对齐方式、填充字符等。本文将详细介绍format_spec的基础概念、使用方法、常见实践以及最佳实践,帮助读者深入理解并高效使用这一特性。其格式的一般结构如下:

数字格式的定义以':'号开始。碰到了': '字符就知道要定义一个数字的显示格式了。格式的定义顺序为[[fill]align][sign][#][0][width][,][.precision][type]''' 在 Python 的 f-string(以及 str.format()、format())里,冒号 : 的作用只有一个:告诉 Python:冒号后面是“格式化说明(format specification)”。即: {变量名 : 格式说明} 没有 : = 原样输出 有 : = 使用特定格式输出 '''format_spec::=[[fill]align][sign][#][0][width][grouping_option][.precision][type]fill::=<anycharacter>align::="<"|">"|"="|"^"sign::="+"|"-"|" "width::=digit+grouping_option::="_"|","precision::=digit+type::="b"|"c"|"d"|"e"|"E"|"f"|"F"|"g"|"G"|"n"|"o"|"s"|"x"|"X"|"%"
  • fill:填充字符(任意字符,常用空格或0
  • align:对齐方式:<(左对齐)、>(右对齐)、^(居中)、=(数字的符号在最左,数字在中间)
  • sign:符号处理:+(始终显示正负号)、-(只显示负号,默认)、(空格,正数前留空格)
  • #:对“#”参数来说,对于二进制/八进制/十六进制,会保留前缀0b/0o/0x;对于浮点会强制显示小数点等
  • 0:如果放在 width 前,用0作为填充且与=相关(常见写法如08.2f
  • width:最小字段宽度(整数),不足时用填充字符填充
  • ,:千位分隔符(每三位加逗号)
  • .precision:精度,含义随type而异(浮点表示小数位数;通用表示有效位数等)
  • type:格式类型(d,b,o,x,X,f,F,e,E,g,G,%,s等)
  • fill 【可选】空白处填充的字符
  • align 【可选】对齐方式(需配合width使用)
  • <,内容左对齐
  • >,内容右对齐(默认)
  • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
  • ^,内容居中
  • sign 【可选】有无符号数字
  • +,正号加正,负号加负;
  • -,正号不变,负号加负;
  • 空格 ,正号空格,负号加负;
  • # 【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
  • , 【可选】为数字添加分隔符,如:1,000,000
  • width 【可选】格式化位所占宽度
  • .precision 【可选】小数位保留精度
  • type 【可选】格式化类型
  • 传入” 字符串类型 “的参数
    • s,格式化字符串类型数据
    • 空白,未指定类型,则默认是None,同s
  • 传入“ 整数类型 ”的参数
    • b,将10进制整数自动转换成2进制表示然后格式化
    • c,将10进制整数自动转换为其对应的unicode字符
    • d,十进制整数
    • o,将10进制整数自动转换成8进制表示然后格式化;
    • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
    • X,将10进制整数自动转换成16进制表示然后格式化(大写X)
  • 传入“ 浮点型或小数类型 ”的参数
    • e, 转换为科学计数法(小写e)表示,然后格式化;
    • E, 转换为科学计数法(大写E)表示,然后格式化;
    • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    • g, 自动在e和f中切换
    • G, 自动在E和F中切换
    • %,显示百分比(默认显示小数点后6位)

fill 【可选】空白处填充的字符

align 【可选】对齐方式(需配合width使用)

  • <,内容左对齐
  • >,内容右对齐(默认)
  • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
  • ^,内容居中

width 【可选】格式化位所占宽度

2.+拼接

a="hello"b="world"c=a+" "+bprint(c)#hello world

+拼接时,两边必须都是字符串

3.,-----print 专用,不是真拼接

print("age is",age)#outputageis18#本质上,print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False)# *objects:可以传入任意多个要打印的对象(0 个、1 个、多个都行)。# sep:分隔符,默认为一个空格 ' '。它决定了多个对象之间用什么字符串分隔。# end:结尾字符串,默认为换行 \n。#对于print("age is",age)#实际上是把两个对象传给了 print():字符串"age is"变量 age(假设 age 是整数18) Python 会: 自动把每个对象转换成字符串(对非字符串对象调用str())。 用 sep 参数指定的分隔符(默认是空格" ")把它们连起来。 最后加上 end(默认换行)输出。

4.%格式化

name="Tom"age=18s="My name is %s, age is %d"%(name,age)print(s)# %相当于一个占位符,告诉这里要插入东西了。
符号含义
%s字符串(万能)
%d整数
%f浮点数

5.str.format()

name = "Tom" age = 18 s = "My name is {}, age is {}".format(name, age) print(s) #output My name is Tom, age is 18 #还可以指定位置 print("{1} is {0}".format("happy", "Tom")) #output Tom is happy #控制格式 pi = 3.14159 print("pi = {:.2f}".format(pi)) #以 :开头,作为开头标志符--{变量:格式规则}---冒号 : 的作用:告诉 Python 后面是格式规则

6.上边写的太复杂了,在写一下f-string

name="Tom"age=18print(f"My name is{name}, age is{age}")#outputMy nameisTom,ageis18#还可以直接写表达式,但是必须是一个要能够算出来值的东西、不能做那些只做动作但是没有产出结果的东西a=3b=5print(f"a + b ={a+b}")#格式化pi=3.14159print(f"pi ={pi:.2f}")#同样是以 : 作为格式化的开的头标志。

7.join(),一般都是大量字符串拼接专用的

lst=["I","love","Python"]s=" ".join(lst)print(s)#outputI love Python#但是要注意,join的要求很严格,必须全部是字符串才可以" ".join(["age",18])#---这是错误的,拼接对象必须都是字符串。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/23 22:27:13

Elasticsearch 8.13.4 常用搜索操作完全指南

Elasticsearch 作为分布式搜索和分析引擎&#xff0c;提供了丰富的搜索能力。本文将详细介绍 Elasticsearch 8.13.4 中最常用的搜索操作&#xff0c;帮助您快速掌握其核心搜索功能。 一、基础概念回顾 在开始搜索操作前&#xff0c;让我们简要回顾几个核心概念&#xff1a; 索引…

作者头像 李华
网站建设 2025/12/23 22:26:03

零基础入门:12个月成为渗透测试员的完整路线图(必收藏)

进入渗透测试领域似乎是一件令人难以承受的事情——尤其是如果你之前没有任何经验的话。对我来说&#xff0c;渗透测试曾经看起来像是一个不可能实现的职业。但如果可以使用捷径来加速你的旅程呢&#xff1f;通过利用现有渗透测试人员的方法和个性中的弱点&#xff0c;你可以从…

作者头像 李华
网站建设 2025/12/23 22:23:14

基于微信小程序的植物百科平台系统毕业设计项目源码

题目简介在植物科普大众化、查询场景轻量化需求升级的背景下&#xff0c;传统植物百科存在 “信息检索难、交互形式单一、场景适配性差” 的痛点&#xff0c;基于微信小程序构建的植物百科平台系统&#xff0c;适配植物爱好者、园艺从业者、学生等角色&#xff0c;实现植物信息…

作者头像 李华
网站建设 2025/12/23 22:20:05

拆解鸿蒙 IoT 接入:网络通信、分布式软总线和能力调用是怎么配合的

摘要 随着物联网设备数量的快速增长&#xff0c;设备之间“能连上”已经不是问题&#xff0c;如何低成本、低复杂度、稳定地接入和管理设备&#xff0c;才是开发中的核心难点。 在传统模式下&#xff0c;IoT 设备往往只是一个“外设”&#xff0c;需要开发者自己处理协议、连接…

作者头像 李华
网站建设 2025/12/23 22:18:02

基于SpringBoot的社区居民服务系统的设计与实现毕业设计项目源码

项目简介在社区服务精细化、居民需求多元化的背景下&#xff0c;传统社区管理存在 “服务响应慢、需求对接散、数据统计难” 的痛点&#xff0c;基于 SpringBoot 构建的社区居民服务系统&#xff0c;适配居民、网格员、物业人员、社区管理员等角色&#xff0c;实现便民服务、事…

作者头像 李华