字符串是python中最常用的数据类型,在整个变成阶段都起到了关键性的作用。
目录
3)、使用 f-strings 进行格式化(Python 3.6+)
4. startswith() 判断字符串是否以...什么开头
7. isalnum() 判断字符串中是否不存在符号,没有返回True,有返回False
前言
字符串是python中一种数据类型,用于表示文本数据。字符串是由字符组成的序列,可以包含字母、数字、符号和空格等字符。
正文
一、字符串的定义
在Python中,你可以使用单引号('
),双引号("
),三引号(“”“/''')来定义字符串。
# 使用单引号和双引号创建单行字符串
str1 = 'Hello World'
str2 = "My name is python"
# 使用三引号创建多行字符串
str3 = """Hello world
My name is python
"""
二、字符编码转换
1、编码的历史(了解即可)
在计算机的发展中一共出现了以下比较常见的编码,它们各有各的优点,不同的编码方式适用于不同的场景和需求。
根据上面的表格我们可以发现,计算机的编码经历了以下四个阶段:
阶段一:计算机能识别英文字符 ASCLL可以用来表示127个常见英文字符 8bit=1字节
阶段二:计算机只能识别英文不方便其他国家使用 中国---gb2321 韩国---Euc-kr
也因此当多国语言混合的文本里就容易出现乱码的情况
阶段三:Unicode把所有语言都编码在一起 内存中固定使用Unicode编码
一般占两个字节,比较偏僻下4下个字节
阶段四:utf-8 字符编码:把二进制数据和语言文字一一对应
2、字符串的编码转换
1)、encode()
作用:将str转换bytes字节类型,让计算机理解,这个过程称之为编码
str1 = '写代码也摆烂'
str2 = str1.encode()
print(str1) # 写代码也摆烂
print(str2) # b'\xe5\x86\x99\xe4\xbb\xa3\xe7\xa0\x81\xe4\xb9\x9f\xe6\x91\x86\xe7\x83\x82'
2)、 decode()
作用:将bytes字节转换成str类型,让人类理解,这个过程称之为解码
# 接编码的代码
str1 = '写代码也摆烂'
str2 = str1.encode()
str3 = str2.decode()
print(str3) # 写代码也摆烂
三、转义字符
在Python字符串中,转义字符用于表示一些特殊字符或执行特定的操作。转义字符以反斜杠\
开始,后面跟着一个或多个字符
四、字符串的基本操作
1、访问字符串的值
1)、索引/下标取值
语法:字符串[索引] 需要注意的是python支持正向与负向索引
正向索引 索引从0开始,从第一个元素开始取值,直到n-1 n为字符串长度
str1 = '写代码也摆烂' # 长度为6
print(str1[0]) # 取第一个元素
print(str1[1]) # 取第二个元素
print(str1[6 - 1]) # 最大索引值
print(str1[6]) # 报错:IndexError: string index out of range 索引超出范围
负向索引 索引从-1开始,从最后一个元素开始取值,直到第-n个
str1 = '写代码也摆烂' # 长度为6
print(str1[-1]) # 取倒数第一个元素 烂
print(str1[-2]) # 取倒数第二个元素 代
print(str1[-6]) # 最小索引值 烂
print(str1[-7]) # 报错:IndexError: string index out of range 索引超出范围
注意:索引不能超过最大值(n-1)和最小值(-n)(n为字符串长度)
2)、切片[开始索引:结束索引:步长]
遵循原则:
1、取头不取尾不包含结束值本身
2、步长代表切取的间隔,正负号代表切取的方向,正代表从左往右切----->,负代表从右往左<-----,步长默认为1,即正向切取,间隔为1
str1 = '写代码也摆烂' # 长度为6
print(str1[1:2]) # 切取下标为1:2的元素,但是因为不包括结束值,使用结果为:代
print(str1[-1:-2]) # 因为步长为1,正向切取-1到-2之间没有相交的元素,固结果为空
print(str1[-1:-2:-1]) # 步长为-1反向切取,-1到-2之间有相交元素,结果为烂str1[-1]
print(str1[-2:-1]) # 步长为1,正向切取,但是包前不包后,固结果为摆==str[-1]
# 比较特殊的用法
print(str1[::]) # 开始索引和结束索引默认从最0开始到最后,步长默认1
print(str1[::-1]) # 设置切取的方向从右往左切,开始和结束默认 这样可以达到反转字符串的目的
# 值得注意的是切片可以超过字符串的索引最大值和最小值
print(str1[0:99]) # 从索引0开始输出,直到索引为n-1, 超过部分不会输出
注意: 切片可以超过字符串的索引最大值和最小值
3)、for循环遍历字符串
字符串是可迭代对象,所以我们可以通过for循环来输出字符串中的每一个字符
str1 = '写代码也摆烂'
for s in str1:
print(s) # 输出字符串中每一个字符
2、成员运算符
1、in 在...里面
作用:判断子字符是否存在字符串里,存在返回布尔值True,否则False
str1 = '写代码也摆烂'
print('写' in str1) # True
print('xie' in str1) # False
2、not in
作用:判断子字符是否不存在字符串里,不存在返回布尔值True,否则False
str1 = '写代码也摆烂'
print('写' not in str1) # False
print('xie' not in str1) # True
3、原生字符串 r/R
语法:r'' 或 R''
作用:表示字符串中只存在普通字符,通常用于文件地址时,防止转义
print(r'C:\Users\kk\Desktop\homework\p') # \开头为转义字符,加上R/r防止转义
4、格式化字符串
1)、使用 % 运算符进行格式化
name = "Alice"
age = 30
formatted_string = "My name is %s and I am %d years old." % (name, age)
print(formatted_string)
2)、使用 str.format() 方法进行格式化
name = "Bob"
age = 25
formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string)
3)、使用 f-strings 进行格式化(Python 3.6+)
name = "Charlie"
age = 35
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)
5、字符串长度计算 len函数
用于计算字符串的长度
str1 = '写代码也摆烂'
print(len(str1)) # 返回整型 6
6、字符串查找方法
1)、字符串.find()
语法:str.find('需要查找的字符',查找的开始位置) 查找的开始位置默认从头开始,可以省略
作用:查找某个子字符串是否存在字符串里,存在则返回查找的子字符串下标,否则返回-1
str1 = '写代码也摆烂'
print(str1.find('码')) # 返回也的下标 2
print(str1.find('花')) # 没有找到该字符,返回-1
# 指定查找开始位置
print(str1.find('码',3)) # 表示从下标3开始查找,而码的下标为2,会查找不到,返回-1
2)、字符串.index()
语法:str.index('需要查找的字符',查找的开始位置) 查找的开始位置默认从头开始,可以省略
作用:检测某个子字符串是否存在字符串里,存在返回子字符串下标,找不到报错
str1 = '写代码也摆烂'
print(str1.index('码')) # 2
print(str1.index('码',1)) # 2
print(str1.index('a')) # ValueError: substring not found
3)、字符串.count()
作用:查找某个子字符串在字符串里出现的总次数,没出现返回0
str1 = '写代码也摆烂烂'
print(str1.count('烂')) # 2
print(str1.count('a')) # 0次代表没有出现
总结: find、index在查找到字符时都返回该字符的下标,但是当没有查找到时find返回-1,index直接报错。count返回子字符串在字符串出现的次数,没有则返回0。
7、字符串判断方法
1. islower() 判断所有字母是否小写
作用:判断字符串里面的字母是否都是小写,返回True或False
str1 = 'abc写代码也摆烂defg'
print(str1.islower()) # True
print('Abcd'.islower()) # False
print('写代码也摆烂'.islower()) # False
2. isupper() 判断所有字母是否大写
作用:判断字符串里的所有字符是否字母都是大写,返回True或False
str1 = 'ABC写代码也摆烂DEF'
print(str1.isupper()) # True
print('ABCd'.isupper()) # False
print('写代码也摆烂'.isupper()) # False
3. isdigit() 判断字符串中的所有字符是否为数字
作用:判断字符串的所有字符是否都是数字组成,返回True或False
str1 = '123写代码也摆烂'
print(str1.isdigit()) # False
print('123'.isdigit()) # True
print('写代码也摆烂'.isdigit()) # False
4. startswith() 判断字符串是否以...什么开头
作用:判断字符串是否以...开头
str1 = '写代码也摆烂'
print(str1.startswith('写')) # True
print(str1.startswith('代')) # False
5. endswith()判断是不是以...字符结尾
作用:判断是不是以...字符结尾
str1 = '写代码也摆烂'
print(str1.endswith('烂')) # True
print(str1.endswith('摆')) # False
6. istitle()判断字符串的首字母是否大写
作用:判断字符串的首字母是否大写
str1 = 'A写代码也摆烂'
print(str1.istitle()) # True
print('abcd'.istitle()) # False
7. isalnum() 判断字符串中是否不存在符号,没有返回True,有返回False
作用:判断字符串中是否没有其他的特殊符号(包括空格、制表符、以及其他的符号),可以包含字母、数字和中文汉字。如果存在其他的符号返回False,否则返回True
str1 = 'Abac21写代码也摆烂'
print(str1.isalnum()) # True
print('abcd-'.isalnum()) # False
print('abc@'.isalnum()) # False
8. isalpha() 判断字符串是否为纯字母
作用:判断字符串的所有字符必须是由纯字母组成的
str1 = 'Abac21写代码也摆烂'
print(str1.isalpha()) # False
print('abcd'.isalpha()) # True
9. isspace()
作用:判断字符串是否为空格
str1 = 'Abac21写代码也摆烂'
print(str1.isspace()) # False
print(' '.isspace()) # True
8、字符串修改方法
在Python中,字符串是不可变类型的,这意味着一旦创建,就不能直接修改字符串的内容,调用修改的方法,修改后返回了一个新的字符串,不会修改原有字符串。
1)、split() 字符串分割函数
参数:split('分隔符') 分隔符:指定分割符号,默认是以空格进行切割
作用:将字符串按指定分隔符进行切分,返回一个列表。
str1 = '写代,码也,摆烂'
print(str1.split(',')) # 返回 ['写代', '码也', '摆烂']
print(str1) # 写代,码也,摆烂 原字符串不变
2)、replace() 字符串替换函数
参数:replace('被替换子字符','新字符')
作用:替换,把字符串里某个子字符串替换成新内容。
str1 = '写代,码也,摆烂'
print(str1.replace(',', '')) # 写代码也摆烂 用空字符替换,
print(str1) # 写代,码也,摆烂 原字符串不变
3)、strip() 去除字符串首尾指定的字符串
参数:strip('需要去除的字符串')
作用:移除字符串首尾指定的字符串;当没有参数时,默认为空格和换行符。
str1 = ' 写代码也摆烂 '
print(str1.strip()) # 写代码也摆烂 默认去除前后的空格
print('+++abc++++++'.strip('+')) # abc 去除前后的+
print(str1) # 写代码也摆烂 原字符串不变
运行结果比较直接:
4)、lower() 转小写
str1 = 'xiedaima'
print(str1.upper()) # XIEDAIMA
5)、upper() 转大写
str1 = 'xiedaima'
print(str1.upper()) # XIEDAIMA
9、字符串的拼接
1)、使用‘+’拼接
str1 = '写代码'
str2 = '也摆烂'
print(str1 + str2) # 写代码也摆烂
print(str1 + ' ' + str2) # 写代码 也摆烂
2)、使用join函数拼接
语法:str1.join(str2)
作用:在str2各个字符之间添加字符串str1
str1 = '写代码'
str2 = '也摆烂'
print(' '.join(str1)) # 写 代 码
print(str1.join(str2)) # 也写代码摆写代码烂
word = ['hello', 'world']
print(' '.join(word)) # hello world
五、内置函数一览
方法 | 描述 |
capitalize() | 返回原字符串的一个副本,将字符串的第一个字符转换为大写,其余字符转换为小写。 |
casefold() | 返回原字符串的一个副本,将字符串中所有字符转换为小写,并且处理更多的特殊字符,使其更适合进行字符串比较。 |
center(width) | 返回原字符串的一个副本,居中对齐,使用空格填充至指定的宽度。 |
count(sub[, start[, end]]) | 返回子字符串在字符串中出现的次数。可选参数 start 和 end 指定搜索范围。 |
encode(encoding=‘utf-8’, errors=‘strict’) | 返回字符串的编码版本。可选参数 encoding 指定编码方式,默认为 ‘utf-8’。 |
endswith(suffix[, start[, end]]) | 检查字符串是否以指定后缀结束,返回 True 或 False。可选参数 start 和 end 指定搜索范围。 |
expandtabs(tabsize=8) | 返回字符串的副本,其中的制表符(\t)将被空格替代,每个制表符替代为 tabsize 指定的空格数。 |
find(sub[, start[, end]]) | 返回子字符串在字符串中第一次出现的位置,找不到返回 -1。可选参数 start 和 end 指定搜索范围。 |
format(*args, **kwargs) | 格式化字符串,使用传递的参数替换占位符。 |
format_map(mapping) | 格式化字符串,使用映射对象中的键值对替换占位符。 |
index(sub[, start[, end]]) | 查找子字符串在字符串中第一次出现的位置,找不到会引发 ValueError。可选参数 start 和 end 指定搜索范围。 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。 |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True,否则返回 False。 |
isidentifier() | 如果字符串是一个合法的Python标识符则返回 True,否则返回 False。 |
islower() | 如果字符串中至少包含一个区分大小写的字符,并且所有这些(区分大小写)字符都是小写,则返回 True;否则返回 False。 |
isnumeric() | 如果字符串中的所有字符都是数字字符,则返回 True,否则返回 False。 |
isprintable() | 如果字符串中的所有字符都是可打印的,则返回 True,否则返回 False。 |
isspace() | 如果字符串只包含空格则返回 True,否则返回 False。 |
istitle() | 如果字符串是标题化的(每个单词的第一个字母大写),则返回 True,否则返回 False。 |
isupper() | 如果字符串中至少包含一个区分大小写的字符,并且所有这些(区分大小写)字符都是大写,则返回 True;否则返回 False。 |
join(iterable) | 返回一个由可迭代对象中的字符串拼接而成的字符串。 |
ljust(width) | 返回原字符串的一个副本,左对齐,并使用空格填充至指定长度。 |
lower() | 返回字符串的一个副本,将所有大写字母转换为小写。 |
lstrip([chars]) | 返回原字符串的一个副本,去除左侧指定字符集合 chars 或空白字符。 |
partition(sep) | 根据分隔符 sep 将字符串分割成三部分,返回一个包含头部、分隔符和尾部的元组。 |
replace(old, new[, count]) | 返回原字符串的一个副本,将所有出现的子字符串 old 替换为 new。可选参数 count 指定替换次数。 |
rfind(sub[, start[, end]]) | 类似于 find() 方法,但是从右边开始查找。可选参数 start 和 end 指定搜索范围。 |
rindex(sub[, start[, end]]) | 类似于 index() 方法,但是从右边开始查找。可选参数 start 和 end 指定搜索范围。 |
rjust(width) | 返回原字符串的一个副本,右对齐,并使用空格填充至指定长度。 |
rpartition(sep) | 根据分隔符 sep 将字符串从右边开始分割成三部分,返回一个包含头部、分隔符和尾部的元组。 |
rstrip([chars]) | 返回原字符串的一个副本,去除右侧指定字符集合 chars 或空白字符。 |
split([sep[, maxsplit]]) | 返回一个由分隔符 sep 拆分原字符串的列表。可选参数 maxsplit 指定拆分次数。 |
splitlines([keepends]) | 返回一个包含字符串中的各行作为元素的列表,可选参数 keepends 指定是否保留换行符。 |
startswith(prefix[, start[, end]]) | 检查字符串是否以指定前缀开头,返回 True 或 False。可选参数 start 和 end 指定搜索范围。 |
strip([chars]) | 返回原字符串的一个副本,去除两侧指定字符集合 chars 或空白字符。 |
swapcase() | 回原字符串的一个副本,将所有大写字母转换为小写,所有小写字母转换为大写。 |
title() | 返回原字符串的一个副本,将每个单词的首字母大写。 |
upper() | 返回字符串的一个副本,将所有小写字母转换为大写。 |
zfill(width) | 返回原字符串的一个副本,在左侧使用零填充至指定的宽度。 |
总结
东西太多了,记不住,所有写下来了。
欢迎指正!
标签:返回,False,python,str1,print,摆烂,Str,字符串 From: https://blog.csdn.net/w3360701048/article/details/137016491