Python3,实用技巧之:三类(7种)拼接字符串方式

举报
Carl_奕然 发表于 2023/07/13 14:46:58 2023/07/13
【摘要】 网友:这三类,确实挺实用的。

1、引言


因为平时善于总结整理,所以,在写博客的时候,就信手拈来…

自夸的人多了去,但是,像我这种,凤毛麟角。

言归正传,
今天我们来搞一搞python3中的拼接字符串小技巧,
虽然是小技巧,但是很实用,可能除了这几种技巧,再找不出来别的技巧了。
Python3中的字符串拼接方式,总的来说三大类,

  • 格式化类:%,format(),template
  • 拼接类:+,(),join()
  • 插值类:f-string


接下来,我们就仔细瞧一瞧,看一看,反正不吃亏!

2、格式化类


2.1 来自C的%方式


%格式化字符串的方式继承自古老的C语言,很多编程语言都有类似的实现。
比如%s是一个占位符,待仅代表一段字符串,并不是拼接的实际内容,而实际内容是在一个单独的%后面,放在一个元组里。


实例

#撸码第一课,hello word

print('%s %s' %('Hello','world'))



输出结果

>>> Hello world



注:

  • %d : 代表一个整数
  • %f :代表一个浮点数
  • %x : 代表一个十六进制数


2.2 format 拼接方式


format用起来确实很简单,也是我比较喜欢的一个方式之一。
下面就直接看例子

  • 实例一、简洁版
#写一句自我介绍
s1 = 'Hello {}! My name is {}.'.format('World','Carl_DJ') 
print(s1)

输入结果

>>> Hello World! My name is Carl_DJ.

  • 实例二、雅典娜版
s2 = 'Hello {0}! My name is {1}.'.format('World','Carl_DJ') 
print (s2)
s3 = 'Hello {name1}! My name is {name2}.'.format(name1 = 'Word',name2 = 'Carl_DJ') 
print(s3)


输入结果

>>> Hello World! My name is Carl_DJ.



我们可以看到,以上两种写法,最后的输入结果都是一样的,
唯一的区别就是赋值的方式,
针对雅典娜版的两个传值方式,建议使用key-value的方式,因为撸码时间长,眼睛容易跟不上,使用key-value更直观。

2.3 面向对象模板拼接


这种拼接方式,有点类似于Django的模板语言渲染字符串,但是,很啰嗦,我们看例子

如果你足够了解Django

from string import Template
#定义
s = Template('${s1} ${s2}!')
#输出
print(s.safe_substitute(s1 = 'Hello',s2 = 'world'))


输出结果

>>> Hello world!



看到这里,是不是真的觉得很啰嗦,明明一个符号的事情,为啥要搞得这么复杂…

3、拼接类


3.1 常用的 + 方式


这种方式是最直观的,最简便的,最易懂的,

因为凡事都可以 +,但是长度不能超过20。

实例

str_1 = 'Hello world!'
str_2 = 'My name is Carl_DJ.'
print(str_1 + str_2)



输出结果

>>> Hello world! My name is Carl_DJ.




3.2 类似元组的方式


实例

s_tuple = ('Hello', ' ', 'world')
print (s_tuple)

s_like_tuple = ('Hello' ' ' 'world')
print (s_like_tuple)


输入结果

  • s_tuple:
>>>'Hello', ' ', 'world'

  • s_like_tuple:
>>>Hello world



这里两个值为什么输出的不一样,因为:
s_like_tuple 并不是一个元组,因为元素之间没有逗号分隔,这些元素可以用空格间隔,也可以不要空格。

3.3 join方法


str对象自带的join方法接收一个序列参数,可以实现拼接。
在拼接时元素如果不是字符串,需要先转换一下。
所以这种方法比较适用于连接序列对象中的元素,并设置统一的间隔。


实例

#定义str_list
str_list = ['Hello','world']
#str_join1的拼接
str_join1 = ''.join(str_list)
#输出
print(str_join1)
#str_join2的拼接
str_join2 = '-'.join(str_list)
#输出
print(str_join2)


输出结果

  • str_join1:
>>>Hello world

  • str_join2:
>>>Hello-world




4、插值类


4.1 f-string方式


实例

name = 'world'
My_name = 'Carl_DJ'
words = f'Hello {name}! My name is {My_name}.'
print(words)



输出结果

>>> Hello world! My name is Carl_DJ.



这种方式就是,在字符串前面加上f,字符串变量存放于{}内。
在可读性上秒杀format方式,在处理长字符串的拼接时,速度与join方式相当。
尽管如此,这种方式由于有一个标识符f,所以并不是所有的大佬都喜欢这种方式。

我就不一样,我就喜欢f-string这种方式。

但是,各有所爱。只要能完美的,优雅的,简洁的在代码中展示,不出错,就是好代码。

5、总结


所以,最后一句话总结:

  • 当处理字符串列表等序列结构时采用join方式 ;
  • 当拼接长度不超过20时选择 + ;
  • 当字符串长度超过20时,推荐f-string方式;

我是小鱼

  • CSDN 博客专家;
  • 阿里云 专家博主;
  • 51CTO博客专家;
  • 51认证讲师等;
  • 认证金牌面试官;
  • 职场面试及培训规划师;
  • 多个国内主流技术社区的认证专家博主;
  • 多款主流产品(阿里云等)测评一、二等奖获得者;


关注我,带你学习更多更专业更前言的Python技术。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。