iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 字符串str详解(超详细)
  • 681
分享到

Python 字符串str详解(超详细)

python开发语言pycharm后端算法 2023-10-22 08:10:16 681人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

文章目录 Python内置函数/方法详解—字符串str1、创建字符串1.1 使用 ' ' 或 " " 创建字符串1.2 使用 str()函数 转换为字符串 2、访问字符串2.1 下标索引

文章目录

python内置函数/方法详解—字符串str

字符串Python中最常用的数据类型

1、创建字符串

1.1 使用 ’ ’ 或 " " 创建字符串

创建字符串很简单,我们可以使用引号(’ ’ 或 " ")来创建字符串,只需为变量分配一个值即可。

str1 = 'Hello Python'str2 = "hello python"

1.2 使用 str()函数 转换为字符串

当然,除了使用引号直接创建字符串之外,我们还可以使用 str() 函数将其他数据类型或对象转换为字符串,其具体用法见下方内置函数。

2、访问字符串

和列表、元组一样,我们既可以使用下标索引访问字符串中的某个元素(得到是一个字符),也可以使用切片访问字符串中的一组元素(得到是子字符串)。

2.1 下标索引访问

下标索引访问字符串分为两大类,即正向索引反向索引,格式为 str_name[i] ,其中,str_name 表示字符串名,i表示索引值,i可以是正数(正向索引)也可以是负数(反向索引)。

可以得知,str_name[0]表示字符串的第一个字符str_name[-1]则表示字符串的最后一个字符

str1 = 'Hello Py'print(str1[0])print(str1[-1])
Hy

正向索引:从第一个(下标0)开始、第二个(下标1)…

反向索引:从倒数第一个(下标-1)、倒数第二个(下标-2)…

2.2 切片访问

如若对上方描述不太理解,可参考下表:

字符串值HelloPy
正向索引01234567
反向索引-8-7-6-5-4-3-2-1

Python访问子字符串,可以使用中括号 [ ] 来截取字符串,即切片访问。

使用切片访问字符串的格式为 str_name[strat : end : step] ,其中,start 表示起始索引,end 表示结束索引,step 表示步长。

str1 = 'Hello Py'print(str1[0:5])print(str1[-8:-1])print(str1[:])print(str1[::2])
HelloHello PHello PyHloP

截取字符串的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。

2.3 for循环遍历字符串

使用 for 循环遍历字符串时,将会输出字符串中的每一个字符。

str_h = 'Hi Py'for char in str_h:    print(char)
Hi Py

2.4 检查元素是否存在

如果我们需要确定在一个字符串中,是否存在相同的字符或者子字符串,可以使用成员运算符中的 innot in 关键字。

关键字描述
in如果字符串中包含给定的字符返回 True。
not in如果字符串中不包含给定的字符返回 True。
str1 = 'Hello Python'print('H' in str1)print('Python' not in str1)
TrueFalse

3、字符串基础知识

3.1 字符串更新

我们可以截取字符串的一部分并与其他字段拼接,如下实例:

str1 = 'Hello World'print(str1[:6] + 'Python')
Hello Python

3.2 字符串连接(合并)/复制(重复)

同列表和元组一样,字符串之间可以使用 + 号和 * 号分别实现字符串的连接(合并)和复制(重复),这意味着它们可以生成一个新的字符串。

+连接(合并)

a = 'Hello'b = 'Python'print(a + b)
HelloPython

*复制(重复)

c = 'Hello'print(c * 5)
HelloHelloHelloHelloHello

3.3 转义字符

如果需要在字符中使用特殊字符时,则使用反\斜杠 \ 转义字符,如下表:

3.4 打印原始字符 r / R

原始字符串:所有的字符串都是直 接按照字面的意思来使用,没有转义特殊或不能打印的字符。

原始字符串除在字符串的第一个引号前加上字母 r / R (可以大小写)以外,与普通字符串有着几乎完全相同的语法。

print(r'\n')print(R'\n')print(r'\t')print(r'\a')
\n\n\t\a

3.5 格式字符串

Python支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

print('我叫 %s ,今年 %d 岁!' % ('pink', 21))
我叫 pink ,今年 21 岁!

在Python中,字符串格式化使用与 C语言printf() 函数一样的用法。

Python字符串格式化符号如下表所示:

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

格式化操作符辅助指令:

符号功能
*定义宽度或者小数点精度
-用做左对齐
+在正数前面显示加号( + )
在正数前面显示空格
#在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0显示的数字前面填充’0’而不是默认的空格
%‘%%‘输出一个单一的’%’
(var)映射变量(字典参数)
m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

3.6 三引号

Python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下:

str1 = """这是一个多行字符串多行字符串可以使用制表符TAB[\t]也可以使用换行符[\n]"""print(str1)
这是一个多行字符串多行字符串可以使用制表符TAB[]也可以使用换行符[]

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

当你需要一块html或者sql时,这时用字符串组合,特殊字符串转义将会非常的繁琐。

errHTML = '''Friends CGI Demo

ERROR

%s

'''
cursor.execute('''CREATE TABLE users ( login VARCHAR(8), uid INTEGER,prid INTEGER)''')

3.7 f-string

f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。

之前我们习惯用百分号 (%):

name = 'pink'print('Hello %s' % name)

f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:

name = 'pink'print(f'Hello {name}')print(f'{1 + 2}')baidu = {'name': 'Baidu', 'url': 'https://www.baidu.com'}print(f'{baidu["name"]}:{baidu["url"]}')
Hello pink3Baidu:Https://www.baidu.com

用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。

在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:

x = 1print(f'{x + 1}')y = 1print(f'{x + 1 = }')
2x + 1 = 2

3.8 Unicode 字符串

在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u

在Python3中,所有的字符串都是Unicode字符串。

4、内置函数

4.1 打印输出 print()

print()函数

print() 函数的功能我们已经非常熟悉了,就是打印输出。

str1 = 'Hello Python'print(str1)
Hello Python

4.2 确定字符串长度 len()

len()函数

当我们要确定一个字符串中有多少个字符时,我们可以使用 len() 函数。

str2 = 'Hello Python'print(len(str2))
12

4.3 返回变量类型 type()

type()函数

使用 type() 函数可以确定变量是什么类型(字符串、列表、元组、字典或集合)。

str3 = 'Hello Python'print(type(str3))
<class 'str'>

当对 str3 使用 type() 确定变量类型时,会返回 ,表明这是一个字符串。

4.4 转换为字符串 str()

str()函数

我们可以使用 str() 函数将列表、元组、字典、集合和区间等对象转换为字符串,以下将会一一介绍:

  • 列表转换为字符串
list1 = ['a', 'b', 'c']print(type(str(list1)))print(str(list1))
<class 'str'>['a', 'b', 'c']
  • 元组转换为字符串
tuple1 = ('A', 'B', 'C')print(type(str(tuple1)))print(str(tuple1))
<class 'str'>('A', 'B', 'C')
  • 字典转换为字符串
dict1 = {'name': 'pink'}print(type(str(dict1)))print(str(dict1))
<class 'str'>{'name': 'pink'}
  • 集合转换为字符串
set1 = {'name', 'gender'}print(type(str(set1)))print(str(set1))
<class 'str'>{'name', 'gender'}
  • 区间转换为字符串
range1 = range(0, 10)print(type(str(range1)))print(str(range1))
<class 'str'>range(0, 10)

4.5 字符串最大/小字符 max()、min()

max()函数和min()函数

max() 函数的作用是返回字符串中最大的字符。min() 函数的作用是返回字符串中最小的字符。

str_m = 'AazZ'print(max(str_m))print(min(str_m))
zA

4.6 删除字符串 del

在Python中,del 函数并不支持删除字符串中的单个字符,但我们可以使用 del 函数删除整个字符串:

str1 = 'Hello Python'del str1print(str1)

当我们使用 del 函数删除某字符串后,如果再使用 print() 函数打印输出时,会报错NameError: name 'str1' is not defined,表明该字符串未被定义。

5、内置方法

5.1 转换

5.1.1 字符(串)转换 capitalize()、casefold()、lower()、upper()、title()、swapcase()

capitalize()方法

capitalize() 将字符串的第一个字母变成大写,其他字母变小写。

语法

string.capitalize()

参数值

无参数

实例

str1 = 'hello python'print(str1.capitalize())
Hello python

casefold()方法

casefold() 方法返回一个字符串,其中所有字符均为小写。

语法

string.casefold()

参数值

无参数

实例

str1 = 'Hello Python'print(str1.casefold())
hello python

此方法与 lower() 方法相似,但是 casefold() 方法更强大,更具攻击性,这意味着它将更多字符转换为小写字母,并且在比较两个用 casefold() 方法转换的字符串时会找到更多匹配项。

lower()方法

lower() 方法转换字符串中所有大写字符为小写(符号和数字将被忽略)。

语法

string.lower()

参数值

无参数

实例

str1 = 'Hello Python'print(str1.lower())
hello python

upper()方法

upper() 方法将字符串中的小写字母转为大写字母(符号和数字将被忽略)。

语法

string.upper()

参数值

无参数

实例

str1 = 'Hello Python'print(str1.upper())
HELLO PYTHON

title()方法

title() 方法返回"标题化"的字符串,就是说所有单词的首个字母转化为大写,其余字母均为小写。

语法

string.title()

参数值

无参数

实例

str1 = 'HELLO Python'print(str1.title())
Hello Python

swapcase()方法

swapcase() 方法用于对字符串的大小写字母进行转换,即将大写字母转换为小写字母,小写字母会转换为大写字母。

语法

string.swapcase()

参数值

无参数

实例

str1 = 'Hello Python'print(str1.swapcase())
hELLO pYTHON
5.1.2 判断大小写 islower()、isupper()、istitle()

islower()方法

islower() 方法检测字符串是否由小写字母组成。

语法

string.islower()

参数值

无参数

str1 = 'Hello Python'print(str1.islower())
False

如果所有字符均为小写,则 islower() 方法返回 True,否则返回 False。不检查数字、符号和空格,仅检查字母字符。

isupper()方法

isupper() 方法检测字符串中所有的字母是否都为大写。

语法

string.isupper()

参数值

无参数

实例

str1 = 'Hello Python'print(str1.isupper())
False

如果所有字符均大写,则 isupper() 方法返回 True,否则返回 False。不检查数字、符号和空格,仅检查字母字符。

istitle()方法

istitle() 方法检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。

语法

string.istitle()

参数值

无参数

实例

str1 = 'Hello Python'print(str1.istitle())
True

如果文本中的所有单词均以大写字母开头,而单词的其余部分均为小写字母,则 istitle() 方法返回 True。否则返回 False。符号和数字将被忽略。

5.2 搜索值

5.2.1 返回出现次数 count()

count()方法

count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。

语法

string.count(value, start, end)

参数值

参数描述
value必需。字符串。要检索的字符串。
start可选。整数。开始检索的位置。默认是 0。
end可选。整数。结束检索的位置。默认是字符串的结尾。

实例

txt = "I love apples, apple are my favorite fruit"print(txt.count("apple", 10, 24))
1
5.2.2 从左搜索并返回 find()、index()

find()方法

find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回 -1

语法

string.find(value, start, end)

参数值

参数描述
value必需。要检索的值。
start可选。开始检索的位置。默认是 0。
end可选。结束检索的位置。默认是字符串的结尾。

实例

  • 字母 “e” 在文本总首次出现的位置:
txt = "Hello, welcome to my world."x = txt.find("e")print(x)
1
  • 如果只搜索位置 5 到 10 时,字母 “e” 在文本总首次出现的位置:
txt = "Hello, welcome to my world."x = txt.find("e", 5, 10)print(x)
8
  • 如果找不到该值,则 find() 方法返回 -1,但是 index() 方法将引发异常:
txt = "Hello, welcome to my world."print(txt.find("q"))print(txt.index("q"))
Traceback (most recent call last):  File "C:\Users\MK\Desktop\Python方法\str.py", line 4, in <module>    print(txt.index("q"))ValueError: substring not found-1

index()方法

index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 find() 方法一样,只不过如果str不在 string中会报一个异常

语法

string.index(value, start, end)

参数值

参数描述
value必需。要检索的值。
start可选。在哪里开始检索。默认是 0。
end可选。在哪里结束检索。默认是字符串的末尾。

实例

  • 字母 “e” 在文本中首次出现在哪里?
txt = "Hello, welcome to my world."x = txt.index("e")print(x)
1
  • 如果只在位置 5 和 10 之间搜索时,字母 "e"首次首先在哪里?
txt = "Hello, welcome to my world."x = txt.index("e", 5, 10)print(x)
8
  • 如果找不到该值,则 find() 方法返回 -1,但是 index() 方法将引发异常:
txt = "Hello, welcome to my world."print(txt.find("q"))print(txt.index("q"))
-1Traceback (most recent call last):  File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module>    print(txt.index("q"))ValueError: substring not found

find()index() 区别

find() 方法与 index() 方法几乎相同,唯一的区别是,如果找不到该值,index() 方法将引发异常,则 find() 方法将返回 -1

5.2.3 从右搜索并返回 rfind()、rindex()

rfind()方法

rfind() 返回字符串最后一次出现的位置,如果没有匹配项则返回 -1

语法

string.rfind(value, start, end)

参数值

参数描述
value必需。要检索的值。
start可选。从何处开始检索。默认是 0。
end可选。在何处结束检索。默认是到字符串的末尾。

实例

  • 在哪里最后出现文本中的字母 “e”?
txt = "Hello, welcome to my world."x = txt.rfind("e")print(x)
13
  • 如果只在位置 5 和位置 10 之间搜索,文本中最后出现的字母 “e” 在何处?
txt = "Hello, welcome to my world."x = txt.rfind("e", 5, 10)print(x)
8
  • 如果找不到该值,则 rfind() 方法返回 -1,但是 rindex() 方法将引发异常:
txt = "Hello, welcome to my world."print(txt.rfind("q"))print(txt.rindex("q"))
-1Traceback (most recent call last):  File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module>    print(txt.rindex("q"))ValueError: substring not found

rindex()方法

rindex() 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。

语法

string.rindex(value, start, end)

参数值

参数描述
value必需。要检索的值。
start可选。从何处开始检索。默认是 0。
end可选。在何处结束检索。默认是到字符串的末尾。

实例

  • 在哪里最后出现文本中的字母 “e”?
txt = "Hello, welcome to my world."x = txt.rindex("e")print(x)
13
  • 如果只在位置 5 和位置 10 之间搜索,文本中最后出现的字母 “e” 在何处?
txt = "Hello, welcome to my world."x = txt.rindex("e", 5, 10)print(x)
8
  • 如果找不到该值,则 rfind() 方法返回 -1,但是 rindex() 方法将引发异常:
txt = "Hello, welcome to my world."print(txt.rfind("q"))print(txt.rindex("q"))
-1Traceback (most recent call last):  File "C:\Users\MK\Desktop\Python方法\str.py", line 3, in <module>    print(txt.rindex("q"))ValueError: substring not found

rfind()rindex() 区别

rfind() 和 rindex() 都是查找指定值的最后一次出现。如果找不到该值,则 rfind() 方法将返回 -1,而 rindex() 方法将引发异常

5.3 以 str 开头/结束 startswith()、endswith()

startswith()方法

startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。

语法

string.startswith(value, start, end)

参数值

参数描述
value必需。检查字符串是否以其开头的值。
start可选。整数,规定从哪个位置开始搜索。
end可选。整数,规定结束搜索的位置。

实例

检查位置 7 到 20 是否以字符 “wel” 开头:

txt = "Hello, welcome to my world."x = txt.startswith("wel", 7, 20)print(x)
True

如果字符串以指定的值开头,则 startswith() 方法返回 True,否则返回 False。

endswith()方法

endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 “start” 与 “end” 为检索字符串的开始与结束位置。

语法

string.endswith(value, start, end)

参数值

参数描述
value必需。检查字符串是否以之结尾的值。
start可选。整数。规定从哪个位置开始检索。
end可选。整数。规定从哪个位置结束检索。

实例

  • 检查字符串是否以短语 “my world.” 结尾:
txt = "Hello, welcome to my world."x = txt.endswith("my world.")print(x)
True
  • 检查位置 5 至 11 是否以短语 “my world.” 结尾:
txt = "Hello, welcome to my world."x = txt.endswith("my world.", 5, 11)print(x)
False

如果字符串以指定值结尾,则 endswith() 方法返回 True,否则返回 False。

5.4 编/解码 encode()、decode()

encode()decode()

encode() 方法以指定的编码格式编码字符串,decode() 方法以指定的解码格式解码字符串。

errors参数可以指定不同的错误处理方案。

语法

string.encode(encoding=encoding, errors=errors)string.decode(decoding=decoding, errors=errors)

参数值

参数描述
encoding / decoding可选。字符串。规定要使用的编码/解码。默认是 UTF-8。
errors可选。字符串。规定错误方法。合法值是:
‘backslashreplace’ - 使用反斜杠代替无法编码的字符
‘ignore’ - 忽略无法编码的字符
‘namereplace’ - 用解释字符的文本替换字符
‘strict’ - 默认值,失败时引发错误
‘replace’ - 用问号替换字符
‘xmlcharrefreplace’ - 用 xml 字符替换字符

实例

str = 'pink老师'str_utf8 = str.encode("UTF-8")str_gbk = str.encode("GBK")print("UTF-8 编码:", str_utf8)print("GBK 编码:", str_gbk)print("UTF-8 解码:", str_utf8.decode('UTF-8', 'strict'))print("GBK 解码:", str_gbk.decode('GBK', 'strict'))
UTF-8 编码: b'pink\xe8\x80\x81\xe5\xb8\x88'GBK 编码: b'pink\xc0\xcf\xca\xa6'UTF-8 解码: pink老师GBK 解码: pink老师

5.5 填充对齐 center()、ljust()、rjust()、zfill()

center()方法

center() 方法返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

语法

string.center(length, character)

参数值

参数描述
length必需。所返回字符串的长度。
character可选。填补两侧缺失空间的字符。默认是 " "(空格)。

实例

使用字母 “O” 作为填充字符:

txt = "banana"x = txt.center(20, "O")print(x)
OOOOOOObananaOOOOOOO

ljust()方法

ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

语法

string.ljust(length, character)

参数值

参数描述
length必需。所返回字符串的长度。
character可选。用于填充缺少空间(在字符串的右侧)的字符。默认值为 " "(空格)。

实例

使用字母 “O” 作为填充字符:

txt = "banana"x = txt.ljust(20, "O")print(x)
bananaOOOOOOOOOOOOOO

rjust()方法

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

语法

string.rjust(length, character)

参数值

参数描述
length必需。所返回字符串的长度。
character可选。用于填充缺失空间(在字符串的左侧)字符。默认值为 " "(空格)。

实例

使用字母 “O” 作为填充字符:

txt = "banana"x = txt.rjust(20, "O")print(x)
OOOOOOOOOOOOOObanana

zfill()方法

zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。

语法

string.zfill(len)

参数值

参数描述
len必需。数字,规定要删除的元素的位置。

实例

用零填充字符串,直到它们长为 10 个字符:

a = "hello"b = "welcome to my world"c = "10.000"print(a.zfill(10))print(b.zfill(10))print(c.zfill(10))
00000hellowelcome to my world000010.000

zfill() 方法在字符串的开头添加零(0),直到达到指定的长度。如果 len 参数的值小于字符串的长度,则不执行填充。

5.6 删除左/右指定字符 lstrip()、rstrip()、strip()

lstrip()方法

lstrip() 方法用于截掉字符串左边的空格或指定字符。

语法

string.lstrip(characters)

参数值

参数描述
characters可选。一组作为前导字符要删除的字符。

实例

删除前导字符:

txt = ",,,,,ssaaww.....banana"x = txt.lstrip(",.asw")print(x)
banana

rstrip()方法

rstrip() 删除 string 字符串末尾的指定字符,默认为空白符,包括空格、换行符、回车符、制表符。

语法

string.rstrip(characters)

参数值

参数描述
characters可选。一组作为结尾字符要删除的字符。

实例

删除结尾字符:

txt = "banana,,,,,ssaaww....."x = txt.rstrip(",.asw")print(x)
banan

strip()方法

strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列。

语法

string.strip(characters)

参数值

参数描述
characters可选。一组字符,要删除的前导/尾随字符的字符。

实例

删除前导和尾随字符:

txt = ",,,,,rrttgg.....banana....rrr"x = txt.strip(",.grt")print(x)
banana

5.7 判断字符(串)

5.7.1 空白字符 isspace()

isspace()方法

isspace() 方法检测字符串是否只由空白字符组成。

语法

string.isspace()

参数值

无参数

实例

txt = "   s   "x = txt.isspace()print(x)
False

如果字符串中的所有字符都是空格,则 isspace() 方法将返回 True,否则返回 False。

5.7.2 可打印 isprintable()

isprintable()方法

isprintable() 方法检查文本中的所有字符是否可打印。

语法

string.isprintable()

参数值

无参数

实例

txt = "Hello!\nAre you #1?"x = txt.isprintable()print(x)
False

如果所有字符都是可打印的,则 isprintable() 方法返回 True,否则返回 False。不可打印的字符可以是回车和换行符。

5.7.3 标识符 isidentifier()

isidentifier()方法

isidentifier() 方法检查字符串是否是有效标识符。

语法

string.isidentifier()

参数值

无参数

实例

a = "MyFolder"b = "Demo002"c = "2bring"d = "my demo"print(a.isidentifier())print(b.isidentifier())print(c.isidentifier())print(d.isidentifier()
TrueTrueFalseFalse

如果字符串是有效标识符,则 isidentifier() 方法返回 True,否则返回 False。

如果字符串仅包含字母数字字母(a-z)和(0-9)或下划线(_),则该字符串被视为有效标识符。有效的标识符不能以数字开头或包含任何空格。

5.7.4 字母/数字 isalnum()

isalnum()方法

isalnum() 方法检测字符串是否由字母和数字组成。

语法

string.isalnum()

参数值

无参数

实例

检查文本中的所有字符是否都是字母数字:

txt = "Company 12"x = txt.isalnum()print(x)
False

如果所有字符均为字母数字,即字母(a-z)和数字(0-9),则 isalnum() 方法返回 True。

非字母数字的例子:(space)!#%&? 等等。

5.7.5 字母/中文 isalpha()

isalpha()方法

isalpha() 方法检测字符串是否只由字母或文字组成。

语法

string.isalpha()

参数值

无参数

实例

检查文本中的所有字符是否都是字母:

txt = "Company10"x = txt.isalpha()print(x)
False

如果所有字符都是字母(a-z),则 isalpha() 方法将返回 True。

非字母的字符例子:(space)!#%&? 等等。

5.7.6 数字 isdigit()、isnumeric()、isdecimal()

1、isdigit()方法

isdigit() 方法检测字符串是否只由数字组成。

语法

string.isdigit()

参数值

无参数

实例

检查文本中的所有字符是否都是字母:

a = "\u0030"  # unicode for 0b = "\u00B2"  # unicode for ²print(a.isdigit())print(b.isdigit())
TrueTrue

如果所有字符都是数字,则 isdigit() 方法将返回 True,否则返回 False。

指数(例如²)也被视作数字。

2、isnumeric()方法

isnumeric() 方法检测字符串是否只由数字组成,数字可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。

指数类似 ² 与分数类似 ½ 也属于数字。

语法

string.isnumeric()

参数值

无参数

实例

检查字符是否为数字:

a = "\u0030"  # unicode for 0b = "\u00B2"  # unicode for ²c = "10km2"print(a.isnumeric())print(b.isnumeric())print(c.isnumeric())
TrueTrueFalse

如果所有字符均为数字(0-9),则 isumeric() 方法返回 True,否则返回 False。

指数(比如 ² 和 ¾)也被视为数字值。

3、isdecimal()方法

isdecimal() 方法检查 unicode 对象中的所有字符是否都是小数。

语法

string.isdecimal()

参数值

无参数

实例

检查 unicode 中的所有字符是否都是小数:

a = "\u0030"  # unicode for 0b = "\u0047"  # unicode for Gprint(a.isdecimal())print(b.isdecimal())
TrueFalse

如果所有字符均为小数(0-9),则 isdecimal() 方法将返回 True。

此方法用于 unicode 对象。

5.8 格式字符串中指定值 fORMat()、format_map()

format()方法

format() 方法格式化指定的值,并将其插入字符串的占位符内,占位符使用大括号 {} 定义。

语法

string.format(value1, value2...)

参数值

参数描述
value1, value2…必需。一个或多个应该格式化并插入字符串的值。值可以是数字,用于指定要删除的元素的位置。
这些值可以是用逗号分隔的值列表、键=值列表,或两者的组合。
这些值可以是任何数据类型。

占位符

可以使用命名索引 {price}、编号索引{0}、甚至空的占位符 {} 来标识占位符。

实例

使用不同的占位符值:

txt1 = "My name is {fname}, I'am {age}".format(fname="Bill", age=64)txt2 = "My name is {0}, I'am {1}".format("Bill", 64)txt3 = "My name is {}, I'am {}".format("Bill", 64)print(txt1)print(txt2)print(txt3)
My name is Bill, I'am 64My name is Bill, I'am 64My name is Bill, I'am 64

格式化类型

在占位符内,您可以添加格式化类型以格式化结果:

格式化类型描述
:<左对齐结果(在可用空间内)
:>右对齐结果(在可用空间内)
:^居中对齐结果(在可用空间内)
:=将标志放置在最左侧
:+使用加号指示结果是正数还是负数
:-负号仅用于负值
:使用空格在正数之前插入一个多余的空格(在负数之前使用减号)
:,使用逗号作为千位分隔符
:_使用下划线作为千位分隔符
:b二进制格式
:c将值转换为相应的 unicode 字符
:d十进制格式
:e科学格式,带有小写字母 E
:E科学格式,带有大写字母 E
:f定点数字格式
:F定点数字格式,以大写形式显示(将 inf 和 nan 显示为 INF 和 NAN)
:g通用格式
:G通用格式(将大写 E 用作科学计数法)
😮八进制格式
:x十六进制格式,小写
:X十六进制格式,大写
:n数字格式
:%百分比格式

format_map()方法

format_map() 方法格式化字符串中的指定值。

语法

str.format_map(mapping)

参数值

参数描述
mapping字典类型的数据。

实例

str_a = '我是 {name} 老师 {gender} {age} 岁'dict_1 = {'name': 'pink', 'gender': '男', 'age': 21}print(str_a.format_map(dict_1))
我是 pink 老师 男 21

5.9 拆分/截取字符串 split()、rsplit()、splitlines()

split()方法

split() 通过指定分隔符从左侧对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。

语法

string.split(separator, max)

参数值

参数描述
separator可选。规定分割字符串时要使用的分隔符。默认值为空白字符。
max可选。规定要执行的拆分数。默认值为 -1,即“所有出现次数”。

实例

  • 使用逗号后跟空格作为分隔符,分割字符串:
txt = "hello, my name is Bill, I am 63 years old"x = txt.split(", ")print(x)
['hello', 'my name is Bill', 'I am 63 years old']
  • 使用 # 号字符作为分隔符:
txt = "apple#banana#cherry#orange"x = txt.split("#")print(x)
['apple', 'banana', 'cherry', 'orange']
  • 将字符串拆分为最多 2 个项目的列表:
txt = "apple#banana#cherry#orange"# 将 max 参数设置为 1,将返回包含 2 个元素的列表!x = txt.split("#", 1)print(x)
['apple', 'banana#cherry#orange']

split() 方法将字符串拆分为列表。

您可以指定分隔符,默认分隔符是任何空白字符。

**注释:**若指定 max,列表将包含指定数量加一的元素。

rsplit()方法

rsplit() 通过指定分隔符从右侧对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。

语法

string.rsplit(separator, max)

参数值

参数描述
separator可选。规定分割字符串时要使用的分隔符。默认值为空白。
max可选。指定要执行的拆分数。默认值为 -1,即“所有出现次数”。

实例

将字符串拆分为最多 2 个项目的列表:

txt = "apple, banana, cherry"# 将 max 参数设置为 1,将返回包含 2 个元素的列表!x = txt.rsplit(", ", 1)print(x)
['apple, banana', 'cherry']

rsplit() 方法从右侧开始将字符串拆分为列表。

如果未指定 “max”,则此方法将返回与 split() 方法相同的结果。

注释: 若指定 max,列表将包含指定数量加一的元素。

splitlines()方法

splitlines() 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

语法

string.splitlines(keeplinebreaks)

参数值

参数描述
keeplinebreaks可选。规定是否应包含换行符(True)或不包含(False)。默认值不包含(False)。

实例

拆分字符串,但保留换行符:

txt = "Thank you for your visiting\nWelcome to China"x = txt.splitlines(True)print(x)
['Thank you for your visiting\n', 'Welcome to China']

5.10 拆分字符串(返回元组) partition()、rpartition()

partition()方法

partition() 方法搜索指定的字符串,并将该字符串拆分为包含三个元素的元组。

第一个元素包含指定字符串之前的部分,第二个元素包含指定的字符串,第三个元素包含字符串后面的部分。

注释:此方法搜索指定字符串的第一个匹配项。

语法

string.partition(value)

参数值

参数描述
value必需。要检索的字符串。

实例

  • 搜索单词 “bananas”,并返回包含三个元素的元组:
    • 1 - “匹配”之前的所有内容
    • 2 - “匹配”
    • 3 - “匹配”之后的所有内容
txt = "I could eat bananas all day"x = txt.partition("bananas")print(x)
('I could eat ', 'bananas', ' all day')
  • 如果找不到指定的值,则 partition() 方法将返回一个元组,其中包含:1 - 整个字符串,2 - 空字符串,3 - 空字符串:
txt = "I could eat bananas all day"x = txt.partition("apples")print(x)
('I could eat bananas all day', '', '')

rpartition()方法

rpartition() 方法搜索指定字符串的最后一次出现,并将该字符串拆分为包含三个元素的元组。

第一个元素包含指定字符串之前的部分,第二个元素包含指定的字符串,第三个元素包含字符串之后的部分。

语法

string.rpartition(value)

参数值

参数描述
value必需。要检索的字符串。

实例

  • 搜索单词 “bananas” 的最后一次出现,并返回包含三个元素的元组:
    • 1 - “匹配”之前的所有内容
    • 2 - “匹配”
    • 3 - “匹配”之后的所有内容
txt = "I could eat bananas all day, bananas are my favorite fruit"x = txt.rpartition("bananas")print(x)
('I could eat bananas all day, ', 'bananas', ' are my favorite fruit')
  • 如果找不到指定的值,则 rpartition() 方法将返回一个元组,其中包含:1 - 整个字符串,2 - 一个空字符串,3 - 一个空字符串:
txt = "I could eat bananas all day, bananas are my favorite fruit"x = txt.rpartition("apples")print(x)
('', '', 'I could eat bananas all day, bananas are my favorite fruit')

5.11 字符串转换 maketrans()、translate()

maketrans()方法

maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

两个字符串的长度必须相同,为一一对应的关系。

语法

string.maketrans(x[, y[, z]])

参数值

参数描述
x必需,字符串中要替代的字符组成的字符串。
y可选,相应的映射字符的字符串。
z可选,要删除的字符。

translate()方法

translate() 返回被转换的字符串。

实例

  • 字母 B 替换为 b
txt = "www.Baidu.com"url = txt.maketrans('B', 'b')print(txt.translate(url))
www.baidu.com
  • 使用字符串设置要替换的字符,一一对应
x = "aeiou"y = "12345"trans = str.maketrans(x, y)str1 = "this is a string"print(str1.translate(trans))
th3s 3s 1 str3ng
  • 设置要删除的字符参数:
txt = "baidu z alibaba  Z tencent"x = "bat"y = "BAT"z = "zZ"  # 设置删除的字符trans = txt.maketrans(x, y, z)print(txt.translate(trans))print(trans)
BAidu  AliBABA   TencenT{98: 66, 97: 65, 116: 84, 122: None, 90: None

5.12 元组项目连接到字符串 join()

join()方法

join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

语法

string.join(iterable)

参数值

参数描述
iterable必需。所有返回值均为字符串的任何可迭代对象。

实例

  • 使用哈希字符作为分隔符,将元组中的所有项目连接到字符串中:
tuple_1 = ("baidu", "alibaba", "tencent")x = "#".join(tuple_1)print(x)
baidu#alibaba#tencent
  • 使用单词 “TEST” 作为分隔符,将字典中的所有项目连接成一个字符串:
dict_1 = {"name": "Bill", "country": "USA"}separator = "TEST"x = separator.join(dict_1)print(x)
nameTESTcountry

5.13 字符串替换 replace()

replace()方法

replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

语法

string.replace(oldvalue, newvalue, count)

参数值

参数描述
oldvalue必需。要检索的字符串。
newvalue必需。替换旧值的字符串。
count可选。数字,指定要替换的旧值出现次数。默认为所有的出现。

实例

  • 替换单词 “bananas”:
txt = "I like bananas"x = txt.replace("bananas", "apples")print(x)
I like apples
  • 替换所有出现的单词 “one”:
txt = "one one was a race horse, two two was one too."x = txt.replace("one", "three")print(x)
three three was a race horse, two two was three too.
  • 替换前两次出现的单词 “one”:
txt = "one one was a race horse, two two was one too."x = txt.replace("one", "three", 2)print(x)
three three was a race horse, two two was one too.

5.14 字符串 Tab 转换 expandtabs()

expandtabs()方法

expandtabs() 方法把字符串中的 tab 符号 \t 转为空格,tab 符号 \t 默认的空格数是 8,在第 0、8、16…等处给出制表符位置,如果当前位置到开始位置或上一个制表符位置的字符数不足 8 的倍数则以空格代替。

语法

string.exandtabs(tabsize)

参数值

参数描述
tabsize可选。规定制表符大小的数字。默认的 tabsize 是 8。

实例

  • 将制表符大小设置为 2 个空格:
txt = "H\te\tl\tl\to"x = txt.expandtabs(2)print(x)
H e l l o
  • 请看看不同制表符大小的结果:
txt = "H\te\tl\tl\to"print(txt)print(txt.expandtabs())print(txt.expandtabs(2))print(txt.expandtabs(4))print(txt.expandtabs(10))
HelloH       e       l       l       oH e l l oH   e   l   l   oH         e         l         l         o

6、总结

函数描述
print()打印输出
len()确定字符串长度
type()返回变量类型
str()转换为字符串
max()字符串最大字符
min()字符串最小字符
del删除字符串
方法描述
capitalize()把首字符转换为大写
casefold()把字符串转换为小写(处理其他语言且存在大小写)
lower()把字符串转换为小写
islower()如果字符串中的所有字符都是小写,则返回 True
upper()把字符串转换为大写
isupper()如果字符串中的所有字符都是大写,则返回 True
title()返回"标题化"字符串:所有单词都以大写开始,其余字母均为小写
istitle()如果字符串遵循标题规则,则返回 True
swapcase()将字符串中大写转换为小写,小写转换为大写
count(str, beg, end)返回str出现的次数,beg和end指定范围
find(str, beg, end)搜索指定的值并返回该位置,beg 和 end 指定范围,不存在返回-1
index(str, beg, end)搜索指定的值并返回该位置,beg 和 end 指定范围,不存在报异常
rfind(str, beg, end)类似于 find() ,不过是从右边开始
rindex( str, beg, end)类似于 index(),不过是从右边开始
startswith(str, beg, end)检查是否以 str 开头,beg 和 end 指定范围,如果是,返回 True,否则返回 False
endswith(str, beg, end)检查是否以 str 结束,beg 和 end 指定范围,如果是,返回 True,否则返回 False
encode(‘UTF-8’, ‘strict’)编码,出错默认报 ValueError 异常,除非 errors 指定的是’ignore’或者’replace’
decode(‘UTF-8’, ‘strict’)解码,出错默认报 ValueError 异常,除非 errors 指定的是’ignore’或者’replace’
center(width, fillchar)返回一个指定的宽度width居中的字符串,fillchar为填充的字符,默认为空格
ljust(width, fillchar)字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格
rjust(width, fillchar)字符串右对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格
zfill (width)返回长度为 width 的字符串,原字符串右对齐,前面填充0
lstrip()删除字符串左边的空格或指定字符
rstrip()删除字符串末尾的空格或指定字符
strip()在字符串上执行 lstrip()和 rstrip(),返回字符串的剪裁版本
isspace()如果字符串中的所有字符都是空白字符,则返回 True
isprintable()如果字符串中的所有字符都是可打印的,则返回 True
isidentifier()如果字符串是标识符,则返回 True
isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
isalpha()如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
isdigit()如果字符串只包含数字则返回 True ,否则返回 False
isnumeric()如果字符串中的所有字符都是数字,则返回 True
isdecimal()检查所有字符是否都是十进制数(0~9),是则返回 True, 否则返回 False
format()格式化字符串中的指定值
format_map()格式化字符串中的指定值(字典)
split(str, num)以 str 为分隔符截取,若 num 指定,则截取 num+1 个子字符串,并返回列表(从左)
rsplit()以 str 为分隔符截取,若 num 指定,则截取 num+1 个子字符串,并返回列表(从右)
splitlines()在换行符处拆分字符串并返回列表
partition()返回元组,其中的字符串分为三部分(搜索 str 第一次出现)
rpartition()返回元组,其中的字符串分为三部分(搜索 str 最后出现)
maketrans(x[, y[, z]])x – 必需,要替代的字符串, y – 可选,相应映射的字符串, z – 可选,要删除的字符
translate()返回被转换的字符串
join()使用字符作为分隔符,将元组中的所有项目连接到字符串中
replace(old, new [, max])将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max
expandtabs(tabsize)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8

以上就是本文的全部内容啦!如果对您有帮助,麻烦点赞啦!收藏啦!欢迎各位评论区留言!!!

最后编辑于:2022/7/31 16:27

来源地址:https://blog.csdn.net/m0_70885101/article/details/126087718

--结束END--

本文标题: Python 字符串str详解(超详细)

本文链接: https://www.lsjlt.com/news/436021.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 字符串str详解(超详细)
    文章目录 Python内置函数/方法详解—字符串str1、创建字符串1.1 使用 ' ' 或 " " 创建字符串1.2 使用 str()函数 转换为字符串 2、访问字符串2.1 下标索引...
    99+
    2023-10-22
    python 开发语言 pycharm 后端 算法
  • python基础字符串str详解
    目录字符串str:编码:ord(字符串)和chr(整数):字符串字面值:字符串通用操作字符串str: 定义:是由一系列字符组成的不可变序列容器,储存的事字符的编码值 编码:...
    99+
    2022-11-12
  • 详解python字符串相关str
    目录1:访str单个字符2: 字符串连接3:str切片4:使用in 和not in 测试字符串5:str方法6:重复操作符7:分割字符串总结1:访str单个字符 #for循环迭代 n...
    99+
    2022-11-12
  • C++超详细讲解字符串类
    目录一、历史遗留问题二、解决方案三、标准库中的字符串类四、字符串循环右移五、小结一、历史遗留问题 C 语言不支持真正意义上的字符串C 语言用字符数组和一组函数实现字符串操作C 语言不...
    99+
    2022-11-13
  • C语言超详细讲解字符串相乘
    目录前言一、分析思路二、使用步骤1、代码如下2、memset函数三、总结前言 我们已经知道,正常的两位整形数据通过*相乘,C语言中int为4字节,32bit(字节),其机器码第一位为...
    99+
    2022-11-13
  • python 字符串详解
    目录一、字符串:二、使用:(1)空字符串和 len( ) 函数(2)转译字符( \ )(3)字符串拼接(4)字符串复制(5)不换行打印(6)从控制台读取参数:(7...
    99+
    2022-11-12
  • Java 超详细讲解字符流
    目录一、字符流的由来二、编码表字符集:Unicode字符集:UTF-8编码规则:三、字符串中的编码解码问题编码方法(IDEA):解码方法(IDEA):四、字符流的编码解码问题四、字符...
    99+
    2022-11-13
  • python 字符串常用方法超详细梳理总结
    目录字符串是什么?字符串常用方法1.find()2.index()3.startswith()4.endswith()5.count()6.join()7.upper()8.lowe...
    99+
    2022-11-13
  • Redis中String字符串和sdshdr结构体超详细讲解
    目录前言sdslen讲解sdsnewlen讲解总结前言 在redis中对字符串的处理,个人觉得特别的优雅,所以特意写这篇帖子来分享一下对其的理解。 struct sdshdr { ...
    99+
    2023-05-15
    Redis String字符串 Redis sdshdr结构体
  • php字符串使用详细了解
    字符串是日常开发中用到最多的数据类型之一,了解字符串首先要明白定界符。 定界符有4种,单引号、双引号、heredoc、nowdoc,常使用的单引号、双引号。 注意点 1、单引号不解析...
    99+
    2022-12-16
    php字符串 php字符串函数
  • 详细解读Python字符串的使用与f-string
    目录Python字符串介绍创建多行字符串连接 Python 字符串访问字符串元素获取字符串的长度切片字符串Python 字符串是不可变的概括Python字符串介绍 字符串是一系列字符...
    99+
    2023-05-14
    详解Python Python字符串 Python字符串f-string
  • C语言超详细讲解字符串函数和内存函数
    目录字符串函数长度不受限制的字符串函数strlenstrcpystrcatstrcmp长度受限制的字符串函数介绍strncpystrncatstrncmp字符串查找以及错误报告str...
    99+
    2022-11-13
  • Python中字符串切片详解
    目录1.没有步长的简单切片2.有步长的切片方式在python中,我们定义好一个字符串,如下所示。 在python中定义个字符串然后把它赋值给一个变量。我们可以通过下标访问单个的字符...
    99+
    2022-11-12
  • Python变量和字符串详解
    几个月前,我开始学习个人形象管理,从发型、妆容、服饰到仪表仪态,都开始做全新改造,在塑造个人风格时,最基础的是先了解自己属于哪种风格,然后找到参考对象去模仿,可以是自己欣赏的人、明星或模特等,直至最后去创新...
    99+
    2022-06-04
    字符串 变量 详解
  • python字符串str.format()方法详解
    一、str.format()方法详解 1.定义和用法 format() 方法格式化指定的值,并将其插入字符串的占位符内。占位符使用大括号 {} 定义,可以使用命名索引 {price}、编号索引{0}、...
    99+
    2023-09-05
    python 开发语言
  • Python海象运算符超详细讲解
    目录介绍语法用法if 语句while 循环while 循环逐行读取文件while 循环验证输入推导式三元表达式总结介绍 海象运算符,即 := ,在 PEP 572 中被提出,并在 P...
    99+
    2023-01-30
    Python海象运算符 Python海象运算符作用
  • python关键字与标识符超详细整理
    目录关键字注意事项Python中的关键字区分大小写关键字作为普通标识符使用会报错标识符标识符命名规则关键字 关键字是python语言中一些已经被赋予特定意义的单词。开发程序是,不可以...
    99+
    2022-11-13
  • Python字符串切片语法和操作【详细讲解】
    切片含义:切片是指对操作的对象截取其中一部分的操作。 字符串切片和下标一样重要,要认真学习。在Python中不仅字符串支持切片操作,后面即将学习的列表、元组同样支持切片操作。 抛出问题: str1 = 'python'# 得到整个字符串...
    99+
    2023-10-02
    python
  • 超详细的c语言字符串操作函数教程
    目录一,常量指针与指针常量二,字符串长度问题三,c语言中的字符串拷贝函数1) strcpy()2), strncpy()3), strcat()4), strncat()5), st...
    99+
    2022-11-12
  • Python 列表list详解(超详细)
    文章目录 Python内置函数/方法详解—列表list1、创建列表1.1 使用 [ ] 创建列表1.2 使用 list() 函数 创建(转换为)列表 2、访问列表2.1 下标索引访问2....
    99+
    2023-08-31
    python 开发语言 pycharm 算法 后端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作