欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Python数据类型(三):str字符串类型

Python数据类型(三):str字符串类型

2025/7/14 18:17:56 来源:https://blog.csdn.net/weixin_49114503/article/details/143888299  浏览:    关键词:Python数据类型(三):str字符串类型

文章目录

  • 一、字符串创建
    • 1.1、原始字符串
    • 1.2、删除字符串
  • 二、字符串索引、切片
    • 2.1、字符串序号/索引
    • 2.2、切片
  • 三、字符串转义
  • 四、字符串操作符
  • 五、字符串格式化
    • 5.1、百分号(%)格式化
    • 5.2、str.format()
    • 5.3、使用 f-strings 格式化字符串
  • 六、字符串的编码与解码
    • 6.1、字符串的编码
    • 6.2、字符串的解码
  • 七、字符串相关函数
    • 7.1、查询相关函数
    • 7.2、转换函数
    • 7.3、判断函数
    • 7.4、分隔函数
    • 7.5、其他函数
  • 八、字符串使用
    • 8.1、字符串拼接
    • 8.2、字符串去重

以下内容基于Python2.7讲解str字符串类型。

一、字符串创建

字符串有两种四类表示方法,分别是用单引号双引号三单引号三双引号来表示。

单引号和双引号通常用于定义单行字符串,
三引号通常用于定义多行字符串,字符串中包含了换行缩进等排版字符。

代码示例:

# coding=utf-8str = 'hello world'  # 单引号
print(str)str = "hello world"  # 双引号
print(str)# 三单引号
str = '''  *********
'''
print(str)

执行结果:

D:\App\python\python2.7.13\Python27\python.exe D:\WorkSpace-Python\Test\test.py 
hello world
hello world*********

1.1、原始字符串

原始字符串:在普通字符串前加r或R,字符串中的特殊字符不需要转义,按照字符串的本来“面目”呈现。

在这里插入图片描述

1.2、删除字符串

del(str):删除字符串的引用

str = 'hello world' 
print(str)# del方法删除变量,若删除后不可再调用
del(str)
# print(str)  # NameError: name 'str' is not defined

二、字符串索引、切片

2.1、字符串序号/索引

字符串序号默认从0开始,python中字符串包括两种序号体系:正向递增序号反向递减序号

  • 正向索引:从左至右依次递增,下标从0至n-1
  • 反向索引:从右到左依次递减,下标从-1至-n

在这里插入图片描述
代码示例如下:

# coding=utf-8str = 'ABCDEFG'
# 获取第一个字符
print(str[0]) # A
# 获取第四个字符
print(str[3]) # D# 获取最后一个字符
print(str[-1]) # G
# 获取倒数第五个字符
print(str[-5]) # Cprint(str[100])    #索引的时候索引值超出范围的时候会报错string index out of range

注意:
索引的时候索引值超出范围的时候会报错string index out of range;

执行结果:
在这里插入图片描述

2.2、切片

切片:通过一个等差数列所对应的索引号从字符串中获取多个元素

语法格式一:str[起点:终点]语法格式二:str[起点:终点:步长]
  • 起点/终点/步长对应一个左闭右开 [起点:终点) 的等差数列
  • 起点/终点均为索引号(正向索引或反向索引)

起点/终点/步长均可以省略

  • 起点可省略,省略时表示从起始元素开始取
  • 终点可省略,省略时表示一直取到最后一个元素
  • 步长可省略,省略时默认为 1
# coding=utf-8str = '123456789'#省略起始值,到下标4结束
print(str[:5])  # 12345# 从下标0到逆序下标-2,倒数第二个
print(str[:-1])  # 12345678#省略终止值,默认是序列的结尾,步长是1
print(str[0::1])  # 123456789#从开始到结尾,间隔1个进行取数
print(str[::2])  # 13579#从第二位到第三位,间隔1个进行取数
print(str[1:3:2])  # 2#正向的全部元素
print(str[::])   #123456789#正向的全部元素
print(str[:])    #123456789#逆向的全部元素
print(str[::-1]) #987654321print(str[100:105])  #切片的时候起始位置和终止位置都超出的时候不会进行报错,超出不会打印出来

注意:
经常使用str[:-1]的方式用于删除掉最后一个字符。
切片的时候起始位置和终止位置都超出的时候不会进行报错,超出不会打印出来

特殊用法1:获取全部元素

str[::]   #正向的全部元素
str[:]    #正向的全部元素
str[::-1] #逆向的全部元素

在这里插入图片描述

特殊用法2:混用正向索引和反向索引 (不推荐)

str[1:4:1]   # BCD
str[1:-4:1]  # BC
str[-7:4:1]  # ABCD

三、字符串转义

转义字符用来在字符串中表示一些特殊的字符,例如换行符 \n、制表符 \t 等。下面是一些常见的转义字符:

转义字符含义
\’表示单引号
\"表示双引号
\表示\f符号
\n表示换行
\b表示删除操作, 退格 (Backspace)
\r表示删除本行之前的所有内容
\t水平制表符

转义符示例:

# \b删除前一个字符
print("123\b")
# 方式一:字符串前面加r, 使字符串原样输出,防止转义
print(r"123\b")
# 方式二:转义字符前面加\ ,防止特殊字符被转义,使字符串原样输出
print("123\\b")
print("分割线------------")
print("123\n456")

在这里插入图片描述

四、字符串操作符

Python除了支持对数字类型的操作符之外,也支持字符串类型的一些操作符,一些常见的操作符及其作用如下所示:

操作符作用
x+y表示将字符串x和字符串y连接起来
x*NN*x表示将字符串x复制N次
x in S如果字符串x是字符串S的子字符串,则返回True,如果不是,则返回False
not in如果指定的字符不在字符串中则返回 True

注意:

  • 必须是两个字符串拼接。不能是字符串与数字类型拼接否则会报错。

字符串操作符的作用如下图所示:

# coding=utf-8
x = "123"
s = "1234"print(x+s)
print(x*3)
print(x in s)

在这里插入图片描述

五、字符串格式化

Python 的字符串格式化有三种常见方式:百分号(%)格式化、str.format()方法、f-string表达式

5.1、百分号(%)格式化

使用百分号(%)作为占位符。

其中 %s 表示字符串类型,%d 表示整数类型,%f 表示浮点型。%d 和 %f 后面可以加上 .n,表示保留 n 位小数。当需要在字符串中表示 % 字符时,需要用两个百分号转义

符 号描述
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址

例如:

age = 18
name = 'Tom'
print('My name is %s, and I am %d years old.' % (name, age))

输出:

My name is Tom, and I am 18 years old.

5.2、str.format()

此方法可以使用花括号 {} 作为占位符,{} 中可以加入数字,表示占位符的顺序

1、使用{} 的方式赋值

name = 'tom'
age = 25
str1 = 'Hello, {}! You are {} years old.'.format(name, age)
print(str1)  # 输出:Hello, tom! You are 25 years old.

2、使用{0} 下标的方式赋值

name = 'Tom'
age = 25
str1 = 'Hello, {0}! You are {1} years old,I have a friend named {0}'.format(name, age)
print(str1)  # 输出:Hello, Tom! You are 25 years old,I have a friend named Tom

使用{0} 下标的方式默认下标是0, 当多次用到同一个参数时,可以重复使用同一个下标。

5.3、使用 f-strings 格式化字符串

f-strings是Python 3.6 引入的,它是一种在字符串中直接插入变量值的简洁方法。使用 f 或 F 字母作为前缀,并在字符串中使用大括号 {} 来插入变量。

name = 'Tom'
age = 25
str1 = f'Hello, {name}! You are {age} years old.'
print(str1)  # 输出:Hello, Tom! You are 25 years old.

f-string的详细用法可参考:python中print(f)的用法、print(f‘‘)具体用法、f-string的基本用法

六、字符串的编码与解码

6.1、字符串的编码

将str类型转换为bytes类型,需要使用到字符串的encode()方法

语法格式如下:

str.encode(encoding='utf-8',erros='strict/ignore/replace')
其中errors表示遇到错误的处理方案:
strict表示严格处理,即直接报错;ignore表示忽略;
replace表示替换,对于无法进行编码的字符会用?来进行替换

6.2、字符串的解码

将bytes类型转换成str类型,需要使用到bytes类型的decode()方法

语法格式如下:

bytes.decode(encoding='utf-8',erros='strict/ignore/replace')
其中errors表示遇到错误的处理方案:
strict表示严格处理,即直接报错;ignore表示忽略;
replace表示替换,对于无法进行编码的字符会用?来进行替换

需要注意的是编码和解码格式必须一一对应。

示例如下:

str1 = '中国'
bytes1 = str1.encode(errors='replace') # 当不设置编码时,默认采用utf-8编码
print(bytes1)
bytes2 = str1.encode(encoding='GBK') # 此处采用gbk进行编码
print(bytes2)
str2 = bytes1.decode(encoding='utf-8')
str3 = bytes2.decode(encoding='GBK')
print(str2)
print(str3)

七、字符串相关函数

7.1、查询相关函数

函数描述
find()检测字符串是否包含指定字符,如果是,返回开始的索引值,否则返回-1区分大小写
rfind()从右向左,检测字符串是否包含指定字符,如果是,返回开始的索引值,否则返回-1区分大小写
index()检测字符串是否包含指定字符,如果是,返回开始的索引值,否则提示错误区分大小写
rindex()从右向左,检测字符串是否包含指定字符,如果是,返回开始的索引值,否则提示错误 区分大小写
# coding=utf-8s = "Hello World"print(s.find("h"))          # find 区分大小写 没找到返回-1
print(s.find("W"))
print("--------------")
print(s.index("l"))
print(s.rindex("l"))#print(s.index("aa"))  # index 未找到抛出异常

在这里插入图片描述

7.2、转换函数

函数描述
lower()将字符串转换为小写
upper()将字符串转换为大写
title()将字符串中每个单词的首字母大写,其他字母全部转小写
capitalize()只将字符串的首字母大写,其他字母全部小写
strip()去除字符串两端的空格
lstrip(characters)去掉字符串左边的指定字符,默认为空
rstrip(characters)去掉字符串右边的指定字符,默认为空格
swapcase()大小写互换, 将大写→小写,小写→大写
# coding=utf-8s = "Hello World ABc1 "print(s.upper())          # 全转为大小
print(s.lower())          # 全转为小写
print("--------------")
print(s.title())         #各个单词首字母大小
print(s.capitalize())    #第一个单词首字母大小
print(s.swapcase())     # 大小写互转

在这里插入图片描述

7.3、判断函数

函数描述
startswith(prefix, start, end)检查字符串是否以指定前缀开始。 是则返回 True,否则返回 False
endswith(suffix, start, end)检查字符串是否以指定后缀结束。是则返回 True,否则返回 False
isspace()如果 str1 中只包含空格,则返回 True,否则返回 False. ''空串不是空格
isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
isdigit()如果字符串只包含数字则返回 True 否则返回 False
isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
isdecimal检测字符串是否以数字组成 必须是纯数字,有小数点都不算纯数字
isinstance()检测是否是小数
isupper()判断字符串是否都是大写字母
islower()判断字符串是否都是小写字母
# coding=utf-8s = "Hello World ABc1 "print(s.startswith("h")) # False
print(s.endswith("H"))  # False
print(' '.isspace())   # 只包含空格  True
print(''.isspace())   # False  空串不是空白符

7.4、分隔函数

函数描述
split()不包含分隔符,如果maxsplit有指定值,则仅分割 maxsplit 个子字符串
splitlines()按照行分隔,返回一个包含各行作为元素的列表
partition()可以将字符串以 str1 进行分隔成三个部分, 返回元组
rpartition()从右向左,可以将字符串以str1进行分隔成三个部分
# coding=utf-8s = "Hello,World,ABc1 "
s1 = s.split(",")  # 不包含分隔符,  返回list列表
print(s1,type(s1))s2 = s.partition(",") # 不包含分隔符,  返回tuple元组
print(s2,type(s2))print("aaa\nbbb\nccc".splitlines()) # 按照行分隔,返回list列表

在这里插入图片描述

7.5、其他函数

函数描述
count(substring, start, end)返回str1在string中指定索引范围内[start,end]出现的次数
join(iterable)是使用某个字符串作为拼接符 print( 字符串.join(变量) )
replace()将string中的str1替换成str2,如果指定count,则不超过count次
len()返回字符串的长度值
zfill(width)返回一个指定宽度的字符串,原字符串右对齐,前面填充 0。若字符串长度超过指定width,则原文输出
ljust(width, fillchar)填充字符串,原字符居左,填充的字符居右 (默认填充空格)
rjust(width, fillchar)填充字符串,原字符居右,填充的字符居左, (默认填充空格) 指定的宽度不足,就打印原字符串
center(width, fillchar)填充字符串,原字符居中 (默认填充空格)
eval()将()内的字符串两端的引号去掉;将字符串str当成有效的表达式来求值并返回计算结果
str(x)任意类型x所对应的字符串形式 str(1.23)的结果为"1.23" str([1,2])的结果为"[1,2]"
chr(x)x为Unicode编码,返回其对应的字符
ord(x)x为单个字符,返回其对应的Unicode编码
# coding=utf-8s = "Hello,World,ABc1 "
print(s.count("l")) # 返回字符串出现的次数print(len(s)) # 返回字符串总长度print("-".join(s)) # 使用-作为拼接符print(s.replace("l","*")) # 把l替换成*

在这里插入图片描述
字符串填充

str = "Tom"
# zfill(width) 返回一个指定宽度的字符串,原字符串右对齐,前面填充 0
print("Tom".zfill(6))  # 000Tom
print("Tom".zfill(2))  # Tomprint(str.ljust(10,"&"))  #Tom&&&&&&&
print(str.rjust(10,"&"))  #&&&&&&&Tom
print(str.center(10,"&")) #&&&Tom&&&&

eval() 将字符串str当成有效的表达式来求值并返回计算结果

a="2+3"
print(eval(a)) # 输出5str4 = "(1222, 244, 435)"
print(eval(str4))   #输出(1222, 244, 435)print(eval("a")) # 输出a
print(eval("2+a")) # 无法计算,抛出异常

chr() ord()

#chr()函数 返回编码对应的UNicode(Ascii码)的字符
print(chr(88))  # X#ord()函数 返回字符表示的对应码值
print(ord('&')) # 38

八、字符串使用

8.1、字符串拼接

在 Python 中,我们可以使用加法操作符 + 来拼接字符串,也可以使用join()连接字符串数组,还可以通过\跨行连接字符串。

(1)使用+拼接字符串

str1 = 'Hello'
str2 = 'world'
str3 = str1 + ' ' + str2
print(str3) # 输出:Hello world

(2)使用join连接字符串组

a =  {"aa","bb"}
print("-".join(a)) # 输出结果:aa-bb# 需要注意针对字典,join结合的是键 
a = {"name":"张三", "sex":"男"}
print("是".join(a))  #输出结果:name是sex

(3) 使用 \ 字符串跨行连接

a = "test1" \
"test2"
print(a)  #输出的结果是test1test2

8.2、字符串去重

1. 字符串拼接以及not in

示例:

str='helloworldhelloworld'
new_s=''
for item in str:if item not in new_s:new_s+=item #拼接操作
print(new_s)

输出结果:

helowrd

2. 使用索引以及not in

示例:

str='helloworldhelloworld'
new_s=''
for i in range(len(str)):if str[i] not in new_s:new_s+=str[i] #拼接操作
print(new_s)

输出结果:

helowrd

3. 通过集合去重+列表的排序

示例:

str='helloworldhelloworld'
new_s=set(str)
lst=list(new_s)
lst.sort(key=str.index)
print(''.join(lst))

输出结果:

helowrd


参考文章:
https://blog.csdn.net/weixin_56261190/article/details/143576517
https://blog.csdn.net/m0_70312393/article/details/143023450


创作不易,欢迎打赏,你的鼓励将是我创作的最大动力。

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com