Python基础第四课——字符串的相关操作

系列文章目录

Python基础学习第一课——python环境的配置及vscode的安装汉化

Python基础第二课——基础知识

Python基础第三课——条件语句和循环语句

python基础第四课——字符串的相关操作(本篇文章)


 

文章目录


前言

上一篇文章中,我们讲了python的条件语句和循环语句这两个非常重要的语法,这篇文章呢来讲解在python中有关字符串的相关操作。在系列文章目录中列出了我python专栏中的其他文章,如果感兴趣的话呢,可以订阅我的专栏或者在我的主页查看前面发布的文章。


一、字符串是什么?

字符串的特点

字符串的定义:在 Python 中,字符串是用单引号('')、双引号("")或三引号(''' '''""" """)括起来的字符序列。这个内容可以是中文、英文、数字、图例等,只要在引号里就叫字符串,字符串英文为 string,简写为 str。

字符串的特点:

(1)字符串不可变类型(这意味着一旦字符串被创建,其内容就不能被修改)
(2)字符串是可迭代对象(简单地说,就是可以用循环逐个访问对象中的元素,字符串的元素就是字符)

(3)字符串支持索引和切片操作,支持操作符(在后面字符串的相关操作中进行具体讲解)


二、字符串的创建

如上所述,在python中创建一个字符串,我们可以用单引号或双引号创建单行的字符串,也可以使用三引号创建多行的字符串。

代码如下(示例):

#使用单引号或双引号来创建字符串:
a="平安"
b='顺遂'
print(a)
print(b)
#输出结果为:平安
#           顺遂
#使用三引号来创建多行字符串:
# 使用三单引号创建一个多行的字符串,常用于记录大段的文本内容,比如一段说明文档
text = '''这是一个多行字符串示例。
它可以跨越多行,
每行的内容都会被完整地保留下来。'''
print(text)

 


三、字符串的相关操作

1.索引和切片

索引:

        索引是对于字符串访问其中元素的一种方式,字符串中的每个字符都有一个索引,索引从0开始。可以通过索引来访问字符串中的单个字符,例如:定义一个字符串str = "hello",str[0]返回 'h',str[3]返回 'l',索引有两种方式,一种从左往右以 0 开始,另一种从右往左以 -1 开始。

        在网上找了个逻辑图,感觉画的很清晰,可以用来辅助理解

切片:

        切片用于获取字符串的子串。语法是string[start:stop:step],其中start是起始索引的位置,默认为0,即从第一个元素开始(包含start位置元素),stop是结束索引的位置,默认为字符串结尾,(不包含stop位置元素)(可以理解为数学上的前闭后开区间),step是步长,默认为1

        来举一个例子,通过代码的运行结果能帮助你更好的了解其用法:

string = 'python'
a = string[1:4]
b = string[::2]
print(a)
print(b)
#首先,代码定义了一个字符串变量 string,其值为 'python'
#语句 a = string[1:4] 进行了切片操作。
#在切片操作中,索引从 0 开始计数,[start:stop]的语法表示从索引 start(包含)开始
#到索引 stop(不包含)结束来获取子串。
#这里 start = 1,stop = 4,也就是会获取字符串string中从第2个字符到第4个字符(不包含第 4 个字符本身)组成的子串。
#语句 b = string[::2] 同样是切片操作
#不过这里使用了完整的切片语法形式 [start:stop:step]
#其中 start 省略时默认从 0 开始,stop 省略时默认到字符串末尾,step 表示步长
#这里 step = 2,意味着每隔 2 个字符取一个字符,从字符串开头到结尾来获取子串

执行上述代码的运行结果为:

 

2.拼接和长度计算

字符串的拼接:

拼接是一个很简单的操作,我们上面讲字符串的特点的时候提到了,字符串支持操作符,那么我们就可以利用'+'来将两段字符串拼接起来,例如:

a = "Hello_"
b = "python_world"
print(a+b)

这段代码的输出结果就是Hello_python_world

当然,字符串不止支持'+'这一种操作符,我们还可以利用'*'来重复一个字符串,例如:

a = "hello"
print(3*a)

这段代码的输出结果为hellohellohello

字符串的长度计算:

        我们怎么获取一个字符串的长度呢,难道需要一个个数其中的元素吗,python比我们想象的要聪明,我们只需要一个函数len(),就可以直接返回字符串的长度,len函数的语法也很简单:len(字符串名)

a = "python"
#可以直接在print里计算
print(len(a))
#也可以先赋值,再打印输出
b = len(a)
print(b)
#两种方式的输出结果都是6

3.字符串的删除、对齐

字符串的删除:

strip 函数用于删除字符串头、尾指定的字符(默认为空格)或字符序列,但只能删除开头或是结尾的字符,不能删除中间部分的字符,语法格式为:字符串名.strip(要指定删除的字符),可以同时指定多个,如果未指定参数,即 str.strip(),则默认会删除空格以及制表符、回车符、换行符等特殊字符;带有参数的时候,删除多个字符时只要原字符串的头、尾有对应其中的某个字符即删除,不考虑顺序,直到遇到第一个不包含在其中的字符为止

举代码为例:

str1 = "    123123123\n\t"
print(str1.strip())
str2 = "******123******"
print(str2.strip("*"))
str3 = "123321213231**123**123321132231"
print(str3.strip("213"))

以上输出结果分别为:

字符串的对齐:

字符串的对齐分为三种:左对齐,右对齐,居中对齐,分别使用三个函数来实现:

(1)ljust 函数:

ljust 函数返回一个原字符串左对齐,并使用指定字符填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串

(2)rjust函数:

rjust 函数返回一个原字符串右对齐,并使用指定字符填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串

(3)center函数:

center 函数返回一个原字符居中对齐,并使用指定字符填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串

三种函数的语法都一样,在这里一起举例吧,通过代码来理解用法:

# ljust函数示例
string1 = "hello"
new_string1 = string1.ljust(10, '*')
print(new_string1)

# rjust函数示例
string2 = "world"
new_string2 = string2.rjust(10, '-')
print(new_string2)

# center函数示例
string3 = "python"
new_string3 = string3.center(12, '$')
print(new_string3)
#三种函数需要填充的参数相同
#第一个参数是指定生成的新字符串的长度
#第二个参数选填,是用于填充的字符,默认为空格

运行结果分别为:

应该还是很好理解的吧

4.字符串的更多方法

  • 大小写转换

    • lower()方法将字符串中的所有字符转换为小写。例如,string = 'Python'string.lower()返回 'python'
       

      string = "PYthon"
      print(string.lower())
      #输出结果为python
      print(string.upper())
      #输出结果为PYTHON
    • upper()方法将字符串中的所有字符转换为大写。例如,string = 'python'string.upper()返回 'PYTHON'

  • 查找和替换

    • find()方法用于查找子串在字符串中的位置。如果找到,返回子串的起始索引;如果找不到,返回 - 1。例如,对于字符串 string = "python programming",string.find('prog')返回 7。

    • replace()方法用于替换字符串中的子串。例如,string = "python programming",string.replace('python','java') 返回 'java programming'

      string = "python programming"
      print(string.find('prog'))
      print(string.replace('python','java'))
      #输出结果分别为:7
      #              java programming
  • 分割和连接

    • split()方法将字符串按照指定的分隔符分割成一个列表。例如,string = 'apple,banana,cherry',string.split(',') 返回 ['apple', 'banana', 'cherry']
       

      string = 'apple,banana,cherry'
      str = string.split(',')
      print(str)
      #代码的输出结果为['apple', 'banana', 'cherry']
    • join()方法是split()的逆操作,用于将一个列表中的元素连接成一个字符串,使用指定的字符串作为连接符。例如,list1 = ['apple', 'banana', 'cherry'],','.join(list1)返回 'apple,banana,cherry'。

list1 = ['apple', 'banana', 'cherry']
list2 = ','.join(list1)
print(list2)
#代码的输出结果为apple,banana,cherry

四、格式化输出

1. % 格式化操作符

基本用法:

    % 格式化操作符是 Python 中比较传统的格式化方式。它的基本语法是格式化字符串 % 值。例如,print("我叫 %s,今年 %d岁。" % ("小明", 20))。
    其中,%s用于格式化字符串类型的数据,%d用于格式化整数类型的数据。如果有多个格式化占位符,后面的值需要用元组的形式提供,并且顺序要与占位符相对应。

格式代码列表:

    %s:字符串(可以是任何类型,在格式化时会自动转换为字符串)。

    %d:十进制整数。

    %f:浮点数。例如,print("圆周率约为%.2f" % 3.14159),这里的%.2f表示保留两位小数,输出为圆周率约为3.14。
    %x或%X:十六进制整数,%x输出小写字母表示,%X输出大写字母表示。例如,print("十六进制表示为%x" % 10),输出为十六进制表示为a。

2.format () 方法

基本用法:

    format()方法是一种更灵活的格式化方式。它通过在字符串中使用大括号{}作为占位符来实现格式化。例如,print("我叫 {0},今年 {1}岁。".format("小明", 20))。

   占位符中的数字表示参数的索引,从 0 开始。如果省略索引,参数将按照顺序依次填充占位符。例如,print("我叫 {},今年 {}岁。".format("小明", 20))也是正确的。

格式化参数的详细设置:

填充与对齐:

可以使用<(左对齐)、>(右对齐)、^(居中对齐)来设置对齐方式。例如:                print("{:>10}".format("python")),这里{:>10}表示将字符串python右对齐,总长度为 10,不足部分用空格填充,输出为 python。

还可以指定填充字符,如print("{:#^10}".format("python")),{:#^10}表示将字符串python居中对齐,总长度为 10,两边用#填充,输出为###python###。

数字格式化:

    对于整数,{:d}是基本的整数格式化。可以添加逗号作为千位分隔符,如print("数字: {:,d}".format(1000000)),输出为数字: 1,000,000。

    对于浮点数,{:f}是基本的浮点数格式化。可以指定小数位数,如print("浮点数: {:.2f}".format(3.14159)),输出为浮点数: 3.14。

3.f - strings(格式化字符串字面量)#这个很重要

基本用法:

    这是 Python 3.6 及以上版本支持的一种简洁的格式化方式。在字符串前面加上f或F,在字符串内部可以直接使用变量和表达式,用花括号{}包裹起来。例如,name = "小明"; age = 20; print(f"我叫 {name},今年 {age}岁。")。

表达式支持:

    可以在花括号内放入表达式。例如,a = 3; b = 4; print(f"a和b的和是 {a + b}"),输出为a和b的和是7。

格式化修饰符的使用:

    和format()方法类似,可以使用修饰符来控制格式。例如,num = 1234.5678; print(f"数字: {num:.2f}"),输出为数字: 1234.57。

五、转义字符

直接用一张表来说明吧,转义字符用到的不是很多,一般来说应用最广泛的是'\',在说明文件路径是应用,'\t'也很常用,打印表格的时候经常会用到,使输出的格式对齐


总结

以上就是今天要讲的内容了,这篇文章实际整理出来的内容比我预想的要多很多,所以写的时间长了些,发布的比较晚了,希望这篇文章能对你有所帮助

我也在学习一些优质博客,不断优化我的文章内容,使其更有条理性和可观性,如果有什么建议或者对文章哪里不理解的地方,可以打在评论区,我们一起交流

最后,感谢观看,给个三连支持一下吧~

(下一篇文章应该在周末更新)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值