python基础知识(五)字符串操作

本文详细介绍了Python中的字符串数据类型,包括创建方法、格式化输出、下标与切片、查找与修改字符串内容、判断字符串特性以及基本运算。并通过实例演示如何提取字符串中的数字并累加。
摘要由CSDN通过智能技术生成

字符串是 Python 中最常用的数据类型。我们可以使用引号 ( '" ) 来创建字符串。创建字符串很简单,只要为变量分配一个值即可。

# 单引号
var1 = 'Hello World!'
# 双引号
var2 = "Python Runoob"
# 三引号
var3 = """hello world
		i love you	"""

三引号创建字符串可以多行组成,三引号和双引号内容可包含单引号,无需转义符。

一、字符串的输入与输出

1.格式化输出(3种)

name = "Ada"
age = 18
height = 180.5
print("大家好,我叫%s,今年%d岁,身高%.1f" % (name, age, height))
print("大家好,我叫{},今年{}岁,身高是{}".format(name, age, height))
print(f"大家好,我叫{name},今年{age}岁,身高是{height}")

2.输入input()

name = input("请输入你的名字:")
print(type(name))
age = input("请输入你的年龄:")
print(type(age))

input()默认类型为字符串

二、下标(索引)

“下标” ⼜叫 “索引” ,就是编号。⽐如⽕⻋座位号,座位号的作⽤:按照编号快速找到对应的座位。索引是从0开始。

var1 = "hello python"
print(var1[1], end=" ")
print(var1[2], end=" ")
print(var1[4])

执行结果

三、切片

切⽚是指对操作的对象截取其中⼀部分的操作。字符串、列表、元组都⽀持切⽚操作 。

  • 不包含结束位置下标对应的数据, 正负整数均可;

  • 步⻓是选取间隔,正负整数均可,默认步⻓为1。

name = "hellopython"
print(name[2:5])    # 从2开始,到5结束(不会拿到5本身)
print(name[2:5:1])  # 从2开始,到5结束,步长为1(不会拿到5本身)
print(name[:5])     # 从0开始,下表为5结束(不会拿到本身)
print(name[1:])     # 从1开始,一直到结束
print(name[:])      # 拿取所有
print(name[::2])    # 从0开始,步长为2,拿取所有
print(name[:-1])    # 从0开始,到最后一个数结束(-1代表最后一个数,不包含-1本身)
print(name[-4:-1])  # 从倒数第四个开始,到倒数第一个结束(不包含-1本身)
print(name[::-1])   # 从-1开始,倒着打印字符串,步长为1
print(name[::-2])   # 从-1开始,倒着打印字符串,步长为2
print(name[:-4:-1]) # >>noh
print(name[-4::-1]) # >>typolleh

执行结果

四、常用操作方法

字符串的常⽤操作⽅法有查找、修改和判断三⼤类。

1.查找

所谓字符串查找⽅法即是查找元素在字符串中的位置出现的次数

(1)find()

        检测某个元素是否包含在这个字符串中,如果在,返回这个字符开始的位置下标,否则返回-1

语法:

        注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。

        # 字符串序列.find(⼦符, 开始位置下标, 结束位置下标)

var = "hello and python and hello world"

print(var.find("and"), end=" ")          # 查找到and首字母下标
print(var.find("and", 8, 20), end=" ")     # 查找到下标为8-20,and首字母下标
print(var.find("ors"), end=" ")          # 查找ors,如果没有,则返回-1

执行结果

(2)index()

        检测某个元素是否包含在这个字符串中,如果在返回这个开始的位置下标,否则报异常

语法:

        注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。

        # 字符串序列.index(⼦符, 开始位置下标, 结束位置下标)

var = "hello and python and hello world"

print(var.index("and"))          # 查找到and首字母下标
print(var.index("and",8,20))     # 查找到下标为8-20,and首字母下标
print(var.index("ors"))          # 查找ors,如果没有,则报错

执行结果

(3)count()

        返回某个元素在字符串中出现的次数

语法:

        注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。

        # 字符串序列.count(⼦符, 开始位置下标, 结束位置下标) 

var = "hello and python and hello world"

print(var.count("and"), end=" ")         # 查看在字符串var中,and出现了多少次
print(var.count("ands"), end=" ")        # 如果没有,则返回0次
print(var.count("and", 8, 20), end=" ")    # 在一个区间内查找and出现的次数

执行结果

(4)拓展-rfind()&rindex() 

 查找⽅向为右侧开始

var = "hello and python and hello world"

# rfind(): 和find()功能相同,但查找⽅向为右侧开始。
print(var.rfind("and"), end=" ")

# rindex():和index()功能相同,但查找⽅向为右侧开始。
print(var.rindex("and"), end=" ")

 执行结果

2.修改

对字符串当中的内容进行修改

(1)replace()

        replace():替换内容

语法:

        注意:替换次数如果超出⼦串出现次数,则替换次数为该⼦串出现次数。

        # 字符串序列.replace(旧⼦符, 新⼦符, 替换次数) 

var = "hello and python and hello world"

print(var.replace("and", "和"))       # 将里面所有的and替换为和
print(var.replace("and", "和", 1))     # 将and替换为和,只替换一次

执行结果 

 

注意:基于数据修改后内存地址是否改变可分为可变类型不可变类型

  • 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。有number(数字),string(字符串),tuple(元组)。
  • 可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。有list(列表),set(集合),dictionary(字典)。

总的来说,数据修改好后,内存地址发生改变则为不可变数据类型,内存地址不变则为可变数据类型。 

(2)split()

        split():按照指定字符分割字符串

语法:

        注意:num表示的是分割字符出现的次数,切割完成之后他会返回一个列表

        # 字符串序列.split(分割字符, num)

var = "hello and python and hello world"

print(var.split("and"))     # 以and为界,分隔开其他字符串,返回一个列表
print(var.split("and", 1))  # 以and为界,分隔开其他字符串,只分割一次,返回一个列表

执行结果

(3)join()

        join():⽤⼀个字符或字符合并字符串,即是将多个字符串合并为⼀个新的字符串

语法# 字符.join(多字符串组成的序列)

list1 = ["hello", "python", "i", "love", "you"]
tuple1 = ("hello", "python", "i", "love", "you")
set1 = {"hello", "python", "i", "love", "you"}

print("__".join(list1))     # 将列表转化为字符串,并且使用指定符号隔开
print(",".join(tuple1))     # 将元组转化为字符串,并且使用指定符号隔开
print("|".join(set1))       # 将集合转化为字符串,并且使用指定符号隔开
print("".join(list1))       # 将列表序列合并为字符串

执行结果

 

(4)大小写转换

        ①capitalize()&title()

        capitalize():将字符串第⼀个字符转换成⼤写。

        title() :将字符串每个单词⾸字⺟转换成⼤写。

var = "hello and python and hello world"
print(var.capitalize())	# 将字符串第⼀个字符转换成⼤写。
print(var.title())      # 将字符串每个单词⾸字⺟转换成⼤写。

执行结果

        ②upper()和lower()

        upper():将字符串中⼩写转⼤写。

        lower():将字符串中⼤写转⼩写。

var = "hello and python and hello world"
print(var.upper())		# 将字符串中⼩写转⼤写。
print(var.lower())		# 将字符串中⼤写转⼩写。

执行结果

 

(5)删除空白字符strip()

        lstrip():删除字符串左侧空⽩字符。 了解即可

        rstrip(): 删除字符串右侧空⽩字符。 了解即可

        strip():删除字符串两侧空⽩字符。

var = "    hello and python and hello world      "
print(var.lstrip())		# 删除左侧空格
print(var.rstrip())		# 删除右侧空格
print(var.strip())		# 删除两侧空格

执行结果

 

(6)填充字符串just()

        # 字符串序列.ljust/rjust/center(⻓度, 填充字符)

var = "hello"
print(var.ljust(10, "_"))	  # 左对齐
print(var.rjust(10, "_"))	  # 右对齐
print(var.center(10, "_"))	  # 居中对齐
print(var.center(11, "_"))	  # 居中对齐

执行结果

3.判断

(1)startswith()&endswith()

startswith():检查字符串是否是以指定元素开头。

endswith():检查字符串是否是以指定元素结尾。

# 字符串序列.startswith(⼦串, 开始位置下标, 结束位置下标) 

# 字符串序列.endwith(⼦串, 开始位置下标, 结束位置下标) 

var = "hello and python and hello world"

print(var.startswith("hello"), end=" ")			# 开头是hello,返回True
print(var.startswith("and"), end=" ")			# 开头不是and,返回False
print(var.startswith("and", 6, 20))		        # 在索引6-20,开头是and,返回True

print(var.endswith("and"), end=" ")				# 结尾不是and,返回False
print(var.endswith("world"), end=" ")			# 结尾时world,返回True
print(var.endswith("and", 0, 9))		        # 在0到9的索引范围,是and结尾,返回True

执行结果

 

(2)isalpha()&isdigit()&isalnum()

isalpha():检查字符串是否只包含英文字母。如果字符串所有字符都是字⺟则返回 True, 否则返回 False。

isdigit():检查字符串是否只包含数字。如果字符串只包含数字则返回 True 否则返回 False。

isalnum():检查字符串是否只包含英文字母或数字。如果字符串所有字符都是字⺟或数字则返 回 True,否则返回False。

mystr1 = 'hello'
mystr2 = 'hello12345'
mystr3 = '12345'
mystr4 = 'hello&&12345'

print(mystr1.isalpha(), end=" ")		# 结果:True
print(mystr2.isalpha())		            # 结果:False

print(mystr2.isdigit(), end=" ")		# 结果: False
print(mystr3.isdigit())		            # 结果:True

print(mystr2.isalnum(), end=" ")		# 结果:True
print(mystr4.isalnum())		            # 结果:False

执行结果

 

(3)isspace()

检查字符串是否为只包含空白。如果字符串中只包含空⽩,则返回 True,否则返回 False。

mystr1 = '1 2 3 4 5'
mystr2 = '    '

print(mystr1.isspace())		# 结果:False
print(mystr2.isspace())		# 结果:True

 执行结果

五、字符串运算 

a = "Hello",b = "Python"

+字符串连接>>>a + b'HelloPython'
[]通过索引获取字符串中字符>>>a[1]'e'
[ : ]截取字符串中的一部分>>>a[1:4]'ell'
in成员运算符 - 如果字符串中包含给定的字符返回 True>>>"H" in aTrue
not in成员运算符 - 如果字符串中不包含给定的字符返回 True>>>"M" not in aTrue
r取消转义>>>r“你\n好”你\n好
%格式字符串(格式化输出占位符)

六、练习 

将字符串var1 = "1a2b3c4d5e6f"中的数字提取,并且累加

# 将字符串var1 = "1a2b3c4d5e6f"中的数字提取,并且累加
var1 = "1a2b3c4d5e6f"
result = 0
for data in var1:
    if data.isdigit() == True:
        result += int(data)
print(result)

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值