python中的字符串

86 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

大家好,我是木大木大,因为疫情和环境原因啊,在家开始了自学python的路子,从此深坑加一人。后面我会每天持续更新一些学习python的过程,当然一开始就是一些基础啦,希望大家多多支持,莫嫌弃啦~

1.1 序列类型

序列

一块可以存放多个值的连续空间

索引

序列类型就是可以存储多个数据的一种数据类型

str 字符串

s = "稀土掘金"
print(s[0],"==",s[-4])
print(s[3],"==",s[-1])

稀 == 稀
金 == 金

1.2 可变类型与不可变类型

可变类型:列表、字典、集合

不可变类型:数字、字符串、元组

概念:
可变类型:值在发生改变时,内存地址不变,即id不变,证明在改变原值

不可变类型:值在发生改变时,内存地址也发生改变,即id也变,证明是没有在改变原值,而是产生了新的值

s = 'hello'
print(s)
s[0] = "a"
print(s)# 会报错  因为字符串不可变

1.3 字符串

1.3.1 内置功能

字符串名.方法名()

1.3.1.1 find()

范围性查找子串,返回索引值,没有则返回-1

字符串名.find(s,beg=0,end=len(string))
s——》指定检索的字符串
beg——》开始索引,默认为0
end——》结束索引,默认为字符串的长度

常用于检测字符串中是否包含子字符串s

s = "hello,world"
print(s.find("h"))  # 0
print(s.find("world")) # 找到了world 并且返回首个字符的索引  6
print(s.find("worldd")) # -1

s = "python,helloworld,java,php"
print(s.find("h"))  # 返回的是首个h的下标  3
print(s.find("h",4)) # 从下标为4的开始往后面找 7
print(s.rfind("h"))  # 从后往前找  24

1.3.1.2 index()

检测字符串中是否包含子字符串s,如果执行开始和结束的范围,则检查是否包含在指定范围内,方法与find()一样,只不过如果s不在字符串中会报错

s = "python,helloworld,java,php"
print(s.index("world"))  # 12
print(s.index("worldd"))  # 找不到子串就会报错

1.3.1.3 count()

返回找到的子串个数,没有就返回0

s = "python,helloworld,java,php"
print(s.count("h"))  # 3

1.3.1.4 strip()

去除字符串两边的空格、换行符、制表符,得到一个新的字符串
code = input("请输入4位验证码:")
data = code.strip()
if data=="ABCD":
    print("验证码正确")
else:
    print("验证码错误")

1.3.1.5 startwith()、endswith()

startwith()判断字符串是否以xx开头,得到一个布尔值
add = input("请输入住址:")
if add.startswith("北京市"):
    print("北京人口")
else:
    print("非北京人口")
    
endswith()判断字符串是否以xx结尾,得到一个布尔值
add = input("请输入住址:")
if add.endswith("村"):
    print("农业户口")
else:
    print("非农业户口")

1.3.1.6 isdigit

判断是否是数字组成
v1 = input("请输入值:")
v2 = input("请输入值:")
if v1.isdigit() and v2.isdigit():
    data = int(v1)+int(v2)
    print(data)
else:
    print("请正确输入数字")

1.3.1.7 lower()、upper()

字母变大写/小写 得到一个新字符串
lower()——》转小写
upper()——》转大写
s = "A"
s1 = s.lower()
print(s1)  # a
s2 = s1.upper()
print(s2)  # A

1.3.1.8 split()

切分字符串,将字符串类型转列表
s = "my name is xiaochuan"
print(s.split())
s1 = "python,helloworld,java,php"
print(s1.split(","))

['my', 'name', 'is', 'xiaochuan']
['python', 'helloworld', 'java', 'php']

1.3.1.9 replace()

字符串内容替换,得到一个新的字符串
content = input("请输入评论信息:")
content1 = content.replace("草","*")  # 第一个参数是要替换的字符,第二个参数是替换成什么字符
print(content1)

#请输入评论信息:草,你个草
#*,你个*

1.3.1.10 join()

用于将序列中的元素以指定字符串链接生成一个新的字符串
常用于将列表类型转为字符串
arr = ["小川","和","乃荣","是","好朋友"]
print("".join(arr))
print("-".join(arr))

小川和乃荣是好朋友
小川-和-乃荣-是-好朋友

1.3.2 公共功能

1.3.2.1 正向取(从左往右)、反向取(从右往左,负号)

s = "hello python"
# 正向取值
print(s[0]) # h
print(s[5]) # 空格 在字符串中空格也属于一个字符
# 反向取值
print(s[-4])  # t
len()得到长度
s = "hello python"
print(len(s))  # 12
s = "hello python"
print(s[len(s)-1])  # 长度减1就是最后一个 n
print(s[-len(s)])   # 负号在这个字符串的长度前面就是第一个  h

1.3.2.2 切片(包头不包尾,步长)

s = "hello python"
print(s[0:9])  # hello pyt
print(s[:9])   # hello pyt
print(s[:])    # 从头到尾 hello python

步长:0:9:2 第三个参数2代表步长,会从0开始,每次累加一个2取值,所以会取出索引0、2、4、6、8的字符
s = "hello python"
print(s[0:9:2]) # hlopt
print(s[::-1])  # 从右往左依次取值,反向取值,步长为负数就是从右往左,首尾不给值就是所有的

注意:下标是序列类型的基本操作,也就是说序列类型都可以进行下标操作