01-字符串操作
python
中的字符串,只要是被单引号或是双引号所 括起来的,就都是字符串。
字符串是一种不可变的数据类型,对字符串进行的任何操作,都不会改变原字符串,而是新生成一个新的字符串。
一. 字符串的切片
字符串中的每一个元素,都可以通过切片来一一取出来。而切片的主要意义就是通过切片,对字符串进行一些处理,从而获得我们需要的数据。
切片的操作
对字符串进行切片,通常需要传递两个参数:起始的下标,和结束的下标。而对字符串进行切片时,还有第三个参数,这个参数代表着步长,这个参数可选参数,如果不填,那么就是默认的步长为。
切片的一般写法是:str[0:2]
,这表示从字符串str
中取出下标从0到2的字符。
字符串切片的注意事项:
- 字符串切片,遵循一个原则:就是切片的时候,取头不取尾;
- 如果起始下标 没有写,那么就是从下标为0的字符,一直截取到结束下标为止;
- 如果结束下标不填,那就是从开始下标一直截取到字符串的末尾;
- 字符串的截取,如果是正序截取,那么下标是从0开始计算;但如果是倒序截取,那么下标就是从-1开始计算;
- 如果是倒序截取字符串,那么截取时,步长必须要填,且此时的步长是负数。
my_hobby = "Never stop learning!"
# 5. 截取从 位置2 ~ 位置6 的字符串
print(my_hobby[2:7])
# 6. 截取从 位置2 ~ 末尾 的字符串
print(my_hobby[2:])
# 7. 截取从 开始位置~ 位置6 的字符串
print(my_hobby[:7])
# 8.截取完整的字符串
print(my_hobby[::])
# 9. 从 索引3 开始,每2个字符中取一个字符
print(my_hobby[3::2])
# 10. 截取字符串末尾两个字符
print(my_hobby[int(len(my_hobby)) - 2:])
# 11. 字符串的倒序
print(my_hobby[::-1])
二. 字符串的常用方法
capitalize():
首字母大写。
s = "china"
s1 = s.capitalize()
print(s1) # China
lower():
字符串中的大写英文变为小写。
s = "chinA"
s2 = s.lower()
print(s2) # china
upper():
字符串中的小写英文变为大写.
s = "chinA"
s3 = s.upper()
print(s3) # CHINA
title():
每个单词的首字母大写。
s = "chinA is a strong country"
s5 = s.title()
print("s5=",s5) # s5= China Is A Strong Country
swapcase():
大小写互换s
s = " chinA"
s3 = s.upper()
print(s3) # CHINa
strip():
去除字符串中的空格(默认去掉两边的空白,包括空格、\t、\n)
也可以去除给定的内容。
s = " chinA"
s6 = s.strip() # 默认去掉两边的空白(包括空格、\t、\n),
print("s6=",s6) # chinA
# 同样可以给定要去掉的内容
s = "hello"
print(s.strip("h")) # ello
replace("字符串中原有的值","要替换的值"[,arg]):
替换。
参数解析:
第一个参数表示字符串中原有的字符,也就是将要被替换掉的数据;
第二个参数表示将要替换的字符,也就是取代字符串中原有字符的数据;
第三个参数是个可选参数,表示替换的次数,默认是全部替换
n = "李白,杜甫,苏轼,李清照,陆游"
print(n.replace("李白","辛弃疾")) # 辛弃疾,杜甫,苏轼,李清照,陆游
注意:
替换之后的字符串,是一个新的字符串,元字符串没有改变。
split():
从字符串的左边进行分隔。分隔出来的是一个列表。
参数解析:
第一个参数表示字符串中将以这个参数进行分隔;
第二个参数表示分隔几次,是可选参数,默认是全部分隔。
n1 = "李白_杜甫_苏轼_李清照_陆游"
print(n1.split("_")) # ['李白', '杜甫', '苏轼', '李清照', '陆游']
rsplit():
类似split(),只不过是从 字符串的右边开始分隔。
startswith():
查找字符串是不是以传递的参数开头。
n2 = "李白,杜甫,苏轼,李清照,陆游"
print(n2.startswith("李")) # True
endswith():
查找字符串是不是以传递的参数而结尾。
n2 = "李白,杜甫,苏轼,李清照,陆游"
print(n2.endswith("游")) # False
count():
计算穿钉的参数在字符串中出现了几次。
如果在字符串中存在传递的参数,那么返回这个参数在字符串中出现的次数;如果字符串中没有出现传递的参数,那么返回0.
n3 = "I have a dream.But I want to kill you!!"
print(n3.count("!")) # 2
find():
查找传递的参数在字符串中的位置。
如果有则显示这个参数在字符串中的下标;如果没有则返回-1.
n4 = "I have a dream.But I want to kill you!!"
print(n4.find("k")) # 29
index():
类似find(),但是如果没有找到元素时,index()函数 会直接报错。
isdigit():
判断字符串是否是有数字组成。
isalpha():
判断字符串是否是有由字母组成。
isalnum():
判断字符串是否是有数字和字母同时组成
isnumeric():
判断字符串是否是由数字组成,这个方法类似isdigit(),但是这个方法可以区分中文中大写数字。
seq.join(index):
以指定的字符,将字符进行拼接。
一般是将一个列表中的元素进行拼接,但是注意,列表中的元素必须是字符串类型才可以拼接。
参数解析:
seq:分隔符,也就是字符串将以这个分隔符进行分隔。
index:需要被分隔的字符串。
并且,将 字符串分隔完毕之后,分隔符将不会出现在分隔出来的列表中。
list = ["今天", "星期五", "明天星期六"]
s =",".join(list)
print(s) # 今天,星期五,明天星期六
format():
格式化。常用来对动态的拼接字符串内容。
age = input("请输入年龄:")
name = input("请输入姓名:")
pirnt("我叫{},我今年{}岁了".format(name, age))
还可以指定顺序:
age = input("请输入年龄:")
name = input("请输入姓名:")
pirnt("我叫{0},我今年{1}岁了".format(name, age))
这种情况可以重复使用:
age = input("请输入年龄:")
name = input("请输入姓名:")
pirnt("我叫{0},我今年{1}岁了,{0}".format(name, age))
还可以指定参数:
age = input("请输入年龄:")
name = input("请输入姓名:")
pirnt("我叫{name},我今年{age}岁了".format(name=name, age=age))