字符串的表示方式
a = "I'm Tom" # 一对双引号
b = 'Tom said:"I am Tom"' # 一对单引号
c = 'Tom said:"I\'m Tom"' # 转义字符
d = '''Tom said:"I'm Tom"''' # 三个单引号
e = """Tom said:"I'm Tom" """ # 三个双引号
注意这里的""“x “”” ‘’‘x ‘’’ 本来是表示注解, 但是一旦用一个变量接收的话, 就会变成字符串, 并且可以随意的使用回车键,参考注释的使用情况
同时要注意转义字符的使用,比如c中额 i’m 中间就有一个\ 是为了输出’
- 双引号或者单引号中的数据,就是字符串
- 如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
- 使用三个单引号、双引号定义的字符串可以包裹任意文本
转义字符
\r | 将当前位置移到本行开头 |
---|---|
\n | 将当前位置移到下一行开头 |
\t | 用来表示一个制表符 |
\\ | 代表一个反斜线字符\ |
’ | 用来显示一个单引号 |
" | 用来显示一个双引号 |
注意转义字符就是\ (右斜杠)
下标和切片
下标
所谓“下标”
又叫“索引”
,就是编号,注意下标的标号从0开始哦, 0 1 2 3 4
只不过字符串的索引是从0开始的
所以字符串的最大索引值永远是长度-1
字符串的取值是根据索引获取 格式 字符串名[索引值]
name = 'abcdef'
print(name[0])
print(name[1])
print(name[2])
遍历
所谓遍历,可以理解为按照一定的规则(一般情况下就是数据的下标),访问每一个数据。不是所有的数据都能够被遍历,字符串是可迭代对象,能够进行遍历
遍历就是吧这个字符串或者是这个啥玩意的里面的东西全部一个一个的输出来。比如下面的两句代码
#while语句遍历:
s = 'hello world'
i = 0
while i < len(s):
print(s[i])
i += 1
#for语句便利
msg = 'hello world'
for x in msg:
print(x)
切片
就是把一个字符串中的某一段拿出来
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片的语法:[起始:结束:步长],也可以简化使用 [起始:结束],甚至于都可以省略到只有一个分号 :
注意快速取反哦
# 切片是一个半开区间 包头不包尾
# 索引是通过下标取某一个元素
# 切片是通过下标去某一段元素
# 需要重点记忆两个语法
# [:] 截取全部
# [::-1] 字符串的反转
s = 'Hello World!'
print(s)
print(s[4]) # o 字符串里的第4个元素
print(s[3:7]) # lo W 包含下标 3,不含下标 7
print(s[:]) # Hello World! 取出所有元素(没有起始位和结束位之分),默认步长为1
print(s[1:]) # ello World! 从下标为1开始,取出 后面所有的元素(没有结束位)
print(s[:4]) # Hell 从起始位置开始,取到 下标为4的前一个元素(不包括结束位本身)
print(s[:-1]) # Hello World 从起始位置开始,取到 倒数第一个元素(不包括结束位本身) 快速取反
print(s[-4:-1]) # rld 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)
print(s[1:5:2]) # el 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)
print(s[7:2:-1]) # ow ol 从下标为7的元素开始(包含下标为7的元素),倒着取到下标为2的元素(不包括下标为2的元素)
# python 字符串快速逆置
print(s[::-1]) # !dlroW olleH 从后向前,按步长为1进行取值
字符串的常见操作
字符串的判断: (*越多越常见)
***startswith 判断大串是否是以某个小串为开头 如果是 返回True 如果不是 返回False
***endswith 判断大串是否是以某个小串为结尾
**isalpha 判断字符串是否为纯字母 (汉字有出入)
**isdigit 判断字符串是否为纯数字
**isalnum 判断字符串是否为数字和字母组成 除了数字和字母 其他出现就报错
**isspace 判断字符串是否全部为空格
"" 叫空串 " "就是有了一个空字符的字符串,不是空串
*****count 求小串在大串中出现的次数
*****replace 用新串替换旧串 可以指定替换次数
*****split 根据指定字符串对原串进行切割操作 切割完之后的返回值是列表 []
如果大串中包含小串 正常切割 如果不包含 就直接把整串存入到列表中
***title 将字符串中的每个单词的首字母变为大写
****lower 将字符串中的所有字母变为小写
****upper 将字符串中的所有字母变为大写
****strip 去除两端空格
**join 字符串的拼接
长度
len()函数
s = "123465798abc"
print(len(s)) #输出为12 ss就有12个字符
方法:需要调用
查找
-
find find(“目标字符串”, start, end)
未找到时,返回-1
-
rfind 和find差不多,不过是从右边开始找的
-
index indes(“目标字符串”, start, end)
跟find()方法一样,只不过,find方法未找到时,返回-1,而str未找到时,会报一个异常。
-
rindex 和index差不多,不过是从右边开始找的
ss = "woainilvxinyaorreereerrerlvxinyaoluxinyaoxinyaoxinyao"
print(ss.find("xinyao", 1,4)) #find("目标字符串", start, end)
#find 找到范围区间内的第一个目标值的下标 ,若目标范围内没有,则返回-1,
s = "你是个大汉子子"
print(s.find("子"))
print(s.rfind("子")) #注意这两个的 区别.运行一下就知道了
print(s.index("大")) #index
判断
注意要调用!!!
start和end可以省略
-
startswith(“目标文本”,start , end)
判断字符串是否以指定内容开始
-
endswith(“目标文本”)
判断字符串是否以指定内容结束。
-
isalpha()
判断字符串是否是纯字母。
-
isdigit()
判断一个字符串是否是纯数字,只要出现非0~9的数字,结果就是False.
-
isalnum()
判断是否由数字和字母组成。只要出现了非数字和字母,就返回False.
-
isspace()
如果 mystr 中只包含空格,则返回 True,否则返回 False.
s5 = "你是个大汉子子"
print(s5.startswith("你是个")) # T 指定内容开始
print(s5.endswith("大汉子")) # F 指定内容结束
print(s5.isalpha()) # T 纯字母
s1 = "python"
print(s1.isalpha()) # T 纯字母
s2 = "123456789bb"
print(s2.isalpha()) # F 纯字母
s3 = "=-*/-!@$#%"
print(s3.isalpha()) # F 纯字母
s = "123465798abc"
print(s.isdigit()) # F 纯数字
print(s.isalnum()) # T 非数字和字母
s4 = " "
print(s4.isspace()) # T 全空格
计算出现次数
返回 str在start和end之间 在 mystr里面出现的次数。
语法格式:
count("目标文本", start, end) # 注意要调用!!!!!!!!!
示例:
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.count('好')) # 3. '好'字出现三次
# 计算出s中python这个单词出现了多少次,,不用count函数
s = "woaipythonhenaipythonfeichanppppppppppppythonpythonzhenbang"
# 定义一个计数器
count1 = 0
# 先去找到第一次出现的位置
index1 = s.find("ppp")
# 判断该位置是否等于-1 因为如果等于-1 证明该字符串中不存在python这个子串
while index1 != -1:
count1 += 1
index1 = s.find("ppp", index1 + len("ppp"))
print(count1)
替换
替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
# .replace("需要替换的文本","替换的文本")
mystr = '今天天气好晴朗,处处好风光呀好风光'
newstr = mystr.replace('好', '坏')
print(mystr) # 今天天气好晴朗,处处好风光呀好风光 原字符串未改变!,
print(newstr) # 今天天气坏晴朗,处处坏风光呀坏风光 得到的新字符串里,'好'被修改成了'坏'
newstr = mystr.replace('好','坏',2) # 指定了替换的次数
print(newstr) # 今天天气坏晴朗,处处坏风光呀好风光 只有两处的'好'被替换成了'坏'
内容分割
-
split 调用 .split(“用啥字符当分隔符”)
返回的结果是一个列表
-
rsplit .rsplit(“用啥字符当分隔符”)
用法和split基本一致,只不过是从右往左分隔。
-
splitlines
按照行\n分隔,返回一个包含各行作为元素的列表。(鸡肋的功能吧)
-
partition
把mystr以str分割成三部分,str前,str和str后,三部分组成一个元组
-
rpartition
类似于 partition()函数,不过是从右边开始.
修改大小写
这个功能只对英文有效果
首字母大写capitalize 字符串.capitalize()
每个单词的首字母大写title 字符串.title
全小写lower 全大写upper. 字符串.lower 字符串.upper
空格处理
要调用
-
ljust(多少字符数) 返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。
就是你设定了10个字符数,如果你输入了五个字符数,那么就会在右边补全5个空白字符,类推下面的
-
rjust(多少字符数) 返回指定长度的字符串,并在左侧使用空白字符补全(右对齐)。
-
center(多少字符数) 返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)
-
lstrip() 删除 字符串左边的空白字符。
-
rstrip() 删除 字符串右边的空白字符。
-
strip() 删除字符串两边的空白字符。
字符串拼接
以前的方法为( f"文本{变量}文本")
#现在新增的如下 还是以前的好用
ss = 'a'
print(ss.join('cisjej122')) # 把目标文本一个个取出,并在后面添加字符a. 最后的 2 保留,没有加 a
print(ss.join(['hi', 'world', '25']))
#caiasajaeaja1a2a2 注意哦,是吧目标字符串添加到函数的文本中间,不会再头前面 和尾后面加 注意对比答案
#hiaworlda25
作用:可以把列表或者元组快速的转变成为字符串,并且以指定的字符分隔。
看不懂上面这句话…元组!!!注意元组 ,元组快速变成字符串
txt = '_'
print(txt.join(['hi','hello','good'])) #hi_hello_good
print(txt.join(('good','hi','hello'))) #good_hi_hello
字符串运算符
- 字符串和字符串之间能够使用加法运算符,作用是将两个字符串拼接成为一个字符串。例如:
'hello' + 'world'
的结果是'helloworld'
- 字符串和数字之间可以做乘法运算,结果是将指定的字符串重复多次。例如:
'hello'*2
的结果是hellohello
- 字符串和字符串之间,如果使用比较运算符进行计算,会获取字符对应的编码,然后进行比较。
- 除上述几种运算符以外,字符串默认不支持其他运算符。
成员运算符
in (代替了find)
not in
成员运算符 (in 和 not in) 可以用来快速的判断元素是否在指定的可迭代对象里,语法格式 要判断的元素 in 可迭代对象
。
s = "hello"
if s.find('a') != -1:
print("该字符已存在")
else:
print("该字符不存在")
if 'a' not in s:
print("a不存在")
else:
print("a存在")
自己的想法
#注意range(star,end,step) 和切片[star,end,step]的区别
#range 是提供star到end-1的数字,,,切片是提取数字,注意区别
#注意切片的省略 会有一个:
# 注意:在Python中,字符串是不可变的!所有的字符串相关方法,都不会改变原有的字符串,都是返回一个结果,
# 在这个新的返回值里,保留了执行后的结果! 大概是说字符串不会被改变,改变的的是地址罢了
#覆盖是指的抢了另一个字符的地址
#但是变量指向a 在指向b,并不是覆盖,只不过是变量指向的地址变了,从a的地址,变成了b的地址
"""
digit 纯数字
alnum 数字和字母
split 分离 分开 切片
partition划分,分割,分开
首字母大写capitalize,每个单词的首字母大写title,全小写lower,全大写upper.
ljust左对齐
strip删除两边空白字符
***记住上面的单词,就可以类比记忆所有的啦***
len函数可以获取字符串的长度
查找
find找指定内容在字符串中是否存在,存在就返回该内容在字符串中第一次出现的开始位置索引值,不存在,则返回-1.
rfind类似于 find()函数,不过是从右边开始查找。(right)
index跟find()方法一样,只不过,find方法未找到时,返回-1,而str未找到时,会报一个异常。
rindex类似于 index(),不过是从右边开始。
判断
startswith判断字符串是否以指定内容开始
endswith判断字符串是否以指定内容结束
isalpha判断字符串是否是纯字母。
isdigit判断一个字符串是否是纯数字,只要出现非0~9的数字,结果就是False.
isalnum判断是否由数字和字母组成。只要出现了非数字和字母,就返回False. alnum 表示字母和小数
isspace如果 mystr 中只包含空格,则返回 True,否则返回 False.
count返回 str在start和end之间 在 mystr里面出现的次数。
替换
替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
六、内容分隔
内容分隔主要涉及到split,splitlines,partition和rpartition四个方法。
split以指定字符串为分隔符切片,如果 maxsplit有指定值,则仅分隔 maxsplit+1 个子字符串。返回的结果是一个列表。
rsplit用法和split基本一致,只不过是从右往左分隔。
splitlines按照行分隔,返回一个包含各行作为元素的列表。
partition把mystr以str分割成三部分,str前,str和str后,三部分组成一个元组 partition划分,分割,分开
rpartition类似于 partition()函数,不过是从右边开始.
七、修改大小写
修改大小写的功能只对英文有效,主要包括,首字母大写capitalize,每个单词的首字母大写title,全小写lower,全大写upper.
capitalize第一个单词的首字母大写。
title每个单词的首字母大写。
lower所有都变成小写。
upper所有都变成大写。
八、空格处理
Python为我们提供了各种操作字符串里表格的方法。
1. ljust返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。
2. rjust返回指定长度的字符串,并在左侧使用空白字符补全(右对齐)
3. center返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)
4. lstrip删除 mystr 左边的空白字符。
5. rstrip删除 mystr 右边的空白字符。
6. strip删除两断的空白字符。
"""