定义字符串的格式有三种形式:
# 格式1: 单引号
name = '王一博'
# 双引号
name = "王一博"
#三引号
name = '''王一博'''
# 三引号的定义什么样,输出就什么样? 是一种有格式的.
name_2 = '''
i ma
王一博
'''
# 想输出的带上字符串格式的, 只需要使用双引号,里面包含单引号即可.
name= " 我是'王一博' "
print(name) # 输出格式为: 我是'王一博'.
\ \
#c = '你好我是 '王一博'' 这样的形式是错误的?
c = '你好我是 \'王一博\''
print(f"转义字符输出格式:{c}")
input()
"""
1. 字符串的输入和输出
输入需要是使用 input的函数
注意输入的类型是 string 类型.
"""
# 1. 从控制台输入姓名,输入类型是 string 类型
name = input("请输入姓名: ")
print(type(name)) # 查看数据类型 type()
print(name)
#2. 从控制台输入一个年龄,(需要注意年龄的数据类型应该是整形)
age = int(input("请输入年龄 : ")) # 通过使用int()数据类型转换将str类型转为int类型
print(type(age)) # 查看数据类型 type()
print(age)
print()
"""
1.字符串的输出有几种形式
使用的函数是 input()
直接输出
字符串格式化 f"{},{}"
占位符方式 %s 字符串
%d 数字
%f 小数
print("我的名字%s"%name)
print("%s,%d"%(name,age))
"""
name = "王一博 "
age = 18
#第一种输出方式
print(name,age)
#第二种输出方式 字符串格式化
print(f"我是,{name},我的年龄,{age}")
# 单个占位符输出
print("名字%s"%name)
#多个占位符输出
print("我的名字%s,我的年龄%d"%(name,age))
字符串的每一个字符都是有编号的.
len()
方法 和 字符串[索引]
len(字符串)
方法是 获取字符串的长度"""
1. 字符串的下标是从零开始的.
为什么会有脚标,下标,索引 ,index这么多称呼
主要是翻译问题, 翻译文献导致每个翻译词汇不同,但指的是一个意思
常用格式
字符串[索引] # 根据字符串索引, 来获取该字符.
len(字符串) 获取字符串的长度
2. 有正数索引
也有负数索引
正数: 从前往后
负数: 从后往前
"""
s = "helo "
a= s[0] # 从零开始,通过索引获取字符.
b= len(s) # 空格也算位置.
print(a,b)
print("-"*20) #复制 "-"
# 负数索引
a_1 = s[-3]
print(a_1)
扩展知识 :
s = "helo "
# 可以得知一个字符串最大索引是?
print(int(len(s)-1)) #相当于字符串的最大长度-1
在 Python 中,字符串切片指的是从一个字符串中选取一部分子串的操作.
注意事项: 包左不包右。 中间使用 :
冒号隔开.
string[start:end:step]
string
表示要进行切片的字符串,start
表示起始索引(默认为 0),end
表示结束索引(默认为字符串的长度),step
表示步长(默认为 1)。字符串切片,操作还支持快捷语法,如果不指定起始索引和步长,可以直接写成 string[:end]
或 string[start:]
或者string[:]
。
举例来说, 假设有一个字符串 s = "Hello, world!"
,如果我们想要选取其中的子串 "Hello"
,可以这样操作:
s[0:5]
0
表示起始索引,5
表示结束索引,注意结束索引是不包含在选取的子串中的,即包左不包右。运行结果为 "Hello"
。字符串 [start : end]
len()
方法,计算字符串的长度.# 第一种写法
s = "hello,world" #字符串索引下标从0开始.
# s[start:end]
a = s[0:5] # 相当于 [1:5) 包左不包右
print(a) # 输出结果: ello
#2. 字符串的长度 len()方法的使用.
print(len(s)) #从1开始计算.
字符串 [start : end : step]
#2. 第二种写法 s[start:end:step] 其中step 是 计算间隔
s = "hello,world"
a = s[0:8:2] #从0开始到8结束(不包含8 ) [0:8),中间间隔为2
#相当于 0 2 4 6.
print(a)# hlow
可以将切片语法结构中部分省略.
s[ :end]
即: 从0开始s[start: ]
即: 从start开始到索引长度结束 len(s)-1
#3. 种写法可以省略
# 切片,以某个索引结尾.
print(f"输出的是什么{s[:5]}") #相当于 [0:5) 相当于从零开始.
# 切片 ,从头开始...
print(f"输出的是什么{s[3:]}")# 相当于 [3:end) 相当于从3开始 len(s)-1 结束.
将切片中语法结构都省略不写
s[ : : ]
省略了start end step 相当于全部输出.#第4种 省略语法结构
s = "hello,world"
a = s[::] #相当于全部输出
print(a) #hello,world
反转输出
s[: : -1]
倒着输出 #5. 反转写法
s = "hello,world"
print(f"反转格式 {s[::-1]}") # dlrow,olleh ,相当于从后面开始取.
负数取值法
#6. 负数取值法
# 分析一波, s = "hello,world" 相当于从后往前寻找. 从-4开始: 从后面开始数d, 然后到-1结束
# 相当于从后面数, -1 就是最后一位, -4 就是往前面数位数. [-4,-1) 也是一样的道理
s = "hello,world"
print(f"反转格式{s[-4:-1]}") #orl
find函数用于检测字符串中 是否包含子字符串.
#1.语法格式
str.find(sub_str,start,end)
find( )
方法的使用.
#1.find 函数和 rfind函数的使用
s = "12345678"
a = s.find("456")
print(a) # 如果包含则返回开始的索引值 3
#第二种写法
b = s.find("345",1,6)
print(b) # 开始索引 2
#如果没有查到则返回 -1
c = s.find("134")
print(c)
index函数,检测字符串中 是否包含子字符串,
#1. 语法格式
str.index(sub_str,start,end)
index方法的使用
s = "12345678"
a = s.index("234")
print(a) # 返回从1开始
#第2中写法
b = s.index("234",0,7)
print(b)
# 如果没有找到的话,则报错
c = s.index("789")
print(c) # ValueError: substring not found
相当于从后往前找, 从后面第一次出现的.
s = "123456789876"
print(s.rfind("8")) #9 从后面找第一个出现的
print(s.find("8")) # 7 从前面找第一个出现的.
print("-"*20) #做一个华丽的分割线
print(s.rindex("8")) #9
print(s.index("8")) #7
count() 函数是, 用于统计字符串中某个子字符串出现的次数。
# 其中 satrt ,end 属于可选参数.
str.count(sub,start,end)
count()
语法练习
# 1.count函数的使用方法
s = "hello and world and you"
print(s.count("and")) # 出现 2次
#根据起始位置 和 结束位置进行统计.
print(s.count("and", 7, 19)) # 出现1次
print(s.count("and",6)) # 出现2次, 相当于从6开始到结束
replace()
方法用来替换字符串中指定子字符串的函数。
替换之后对原始字符串没有影响,会重新生成一个新的字符串.
#1,语法格式如下
str.replace(old, new,count])
两种替换情况 根据可选参数 count
确定
count
不使用count
使用s = "hello and world and you"
# #1. 相当于将 and 全部替换成了 or
print(s.replace("and", "or"))
#2. 部分替换 只替换1次
print(s.replace("and","or",1))
#3.输出查看原来的字符串是否发生改变
print(s)
split() 方法, 用来将字符串按照某个分隔符进行分割,
split() 方法有一个可选参数 sep
用来指定分割符,如果不传入任何参数,则默认按照空格分割。
str.split(sep) # 按照格式进行切割
str.sprlit() #默认不写就是按照空格切分
# 1.split() 方法使用
s = "123,456,789 101112 123 456"
#1.1 我可以按照逗号切分,返回一个list容器
print(s.split(","))
#1.2 我可以按照空格切分,返回一个list容器
print(s.split(" "))
#1.3 不传递参数 ,按照默(空格)切分
print(s.split())
# 2. count可选参数 默认切割几次,
print(s.split(",",1)) #对比发现,只对第一个逗号进行切割.
#2.1 可以按照出现的字符进行切分,了解即可.
print(s.split("123"))
join()
它可以将一个列表或元组中的多个字符串元素,按照 指定的分隔符 连接成一个 单独的字符串。
join()
方法的语法格式如下:
str.join(iterable) # 也可以放入 list 列表
练习如下:
str.join(列表),
也可以放列表. 然后根据分割符,进行遍历输出, 生成新的字符串.# 1.join使用方法介绍
s = "hello"
# 1.将原有的字符串进行了遍历.并添加了分隔符.
new_s = "-".join(s)
print(new_s) # h-e-l-l-o
#2.使用空格进行分割了.
new_s1 = " ".join(s)
print(new_s1) # h e l l o
#3. 定义一个list列表.,可以切割list->str
a = ["a","b","c","d"]
print(a)
#生成了字符串
#print(type(" * ".join(a)))
print(" * ".join(a)) # a * b * c * d
capitalize()
mystr.capitalize()
# mystr.capitalize()
s = "hello,world"
print(s.capitalize()) #Hello,world
title()
a.title()
a = "hello world"
print(a.title())
'Hello,World'
startswith()
是则返回 True,否则返回 False.
# mystr.startswith(hello)
s = "hello,world"
print(s.startswith("h"))
#也可以使用 单词开头
print(s.startswith("hello"))
endswith
判断字符串是否以指定后缀结尾.
str_1 = "hello,world"
#判断字符串以什么后缀结尾
print(str_1.endswith("ld")) # True
lower()
和 upper()
#1.大写变小写
str_2 ="HELLO,WORLD"
print(str_2.lower())
#2.小写变大写
str_1 ="hello,world"
print(str_1.upper())
判断单词 great是否在字符串words中,如果在,则将每一个great后面加一个s, 如果不在则输出 great不在该字符串中
将整个字符串的每一个单词都变成小写,并使每一个单词的首字母变成大写
去除首尾的空白,并输出处理过后的字符串
words = " great craTes Create great craters, But great craters Create great craters "
# 判断单词great是否在这个字符串中
if 'great' in words:
# 将每一个great替换成greats
words = words.replace("great", "greats")
# 将单词变成小写
words = words.lower()
# 将每一个单词的首字母都大写
words = words.title()
# 去除首尾的空白
words = words.strip()
# 最后进行输出
print(words)
else:
print("great不在该字符串中")