Python之字符串
字符串创建
字符串类型是Python里面最常见的类型
可以简单地通过在引号间(单引号/双引号/三引号)包含字符的方式创建它
三重引号的作用
作用一:进行多行注释
"""
这是多行注释第一行
多行注释第二行
多行注释第三行
"""
作用二:定义多行字符串
print('''hello
python
world''')
测试结果
hello
python
world
字符串删除
字符串是不可变的,只能通过赋一个空字符串或者使用del语句来清空或者删除一个字符串。但是没有必要显示的删除字符串,定义这个字符串的代码结束时会自动释放这些字符串。
>>> string="I love python"
>>> string
'I love python'
>>> del string
>>> string
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'string' is not defined
(出现error是因为此时string已经被删除)
连接操作符(’+’)
从原有字符串获得一个新的字符串
print('hello'+'world')
print('hello '+' world')
测试
helloworld
hello world
重复操作符
创建一个包含了原有字符串的多个拷贝的新串
print('&'*10 + '学生管理系统' + '&'*10)
print ('$'*30+'hello')
测试
&&&&&&&&&&学生管理系统&&&&&&&&&&
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$hello
计算长度
astring='hello '
print(len(astring))
字符串的索引
索引(s[i] ):获取特定偏移的元素(str[0]即为偏移为0位,即第一个元素)
- 正向索引
- 反向索引
str='abd sdjfn lkdn'
print(str[0])
print(str[3])
print(str[5])
print(str[-1])
测试
6
a
d
n
字符串的切片
- 切片S[i:j]提取对应的部分作为一个序列:
- 如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度;
扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长; - s[:]获取从偏移量为0到末尾之间的元素,是实现有效拷贝的一种方法;
- s[::-1]是实现字符串反转的一种方法;
# 切片(获取多个值)=====range(start,end) 从start开始到end-1结束
str='abcd hello world jjj'
print(str[0:2]) # 获取前2个元素
print(str[:2]) # 获取前2个元素, 如果start没有指定, 默认从头开始
print(str[0:3]) # 获取前3个元素
print(str[:3]) # 获取前3个元素
print(str[2:4]) # 获取除了前2个元素
print(str[2:]) # 获取除了前2个元素, 如果end没有指定, 则到末尾
#
print(id(str))
copyStr = str[:]
print(id(copyStr))
print(str[::2]) # 间隔为2显示字符串
print(str[::-1]) # 翻转字符串
测试
ab
ab
abc
abc
cd
cd hello world jjj
4538571704
4538571704
ac el ol j
jjj dlrow olleh dcba
成员操作符
成员操作符用于判断一个字符或者一个子串(中的字符)是否出现在另一个字符串中。出现则返回 True,否则返回 False.
# 成员操作符
print('he' in 'hello') # True
print('ho' in 'hello') # False
print('ho' not in 'hello') # True
print('he' not in 'hello')
字符串的判断
str='Wnndsf11'
print(str.isalnum())#True
print(str.isnumeric())#False
print(str.isalpha())#False
print(str.istitle())#True
print(str.islower())#False
print(str.isdigit())#False
字符串的转换
str="hEkjsbj ag"
print(str.capitalize())
print(str.title())
print(str.upper())
print(str.lower())
print(str.swapcase())
测试
Hekjsbj ag
Hekjsbj Ag
HEKJSBJ AG
hekjsbj ag
HeKJSBJ AG
字符串的开头和结尾匹配
url1="file:///mnt"
url2="ftp:///..."
url3="http:///..."
if url1.startswith("http://"):
print("爬取网页。。。")
else:
print("不爬取网页")
if url3.startswith(("http://")):
print("success")
else:
print("fail")
测试
不爬取网页
success
字符串的数据清洗
str=' i love python '
print(str.strip())#去除字符串两边的空格
print(str.lstrip())#去除字符串左边的空格
print(str.rstrip())#去除字符串右边的空格
print(str.replace("python","C"))#字符串替换
print(str.replace(" ",""))#去除字符串中所有空格
测试
i love python
i love python
i love python
i love C
ilovepython
字符串的搜索&统计
- find
s='I love Python this summer'
print(s.find('6'))#find中如果不包括索引值,返回-1
print(s.find('P',6))#find返回的都是索引值
print(s.find('s',4))
print(s.find('s',18))
测试
-1
7
17
19
- index
s='I love Python this summer'
print(s.index('6'))
print(s.index('P',6))
测试
ValueError: substring not found
7
- count
print(s.count("o")
测试
2
字符串的分离
# 分割
ip = '172.25.254.250'
# 以.为分隔符进行分割;
print(ip.split('.')) # ['172', '25', '254', '250']
# 以.为分隔符进行分割;最多切割1次;
print(ip.split('.', maxsplit=1)) # ['172', '25.254.250']
filename = 'hello.py'
print(filename.split('.'))
# 按行进行分割
info = """
user1: user1
user2: user2
user3: user3
user4: user4
"""
# 以空格(\t, \n, \ )进行分割
print(info.split())
# 以\n进行分割;
print(info.splitlines())
测试
['172', '25', '254', '250']
['172', '25.254.250']
['hello', 'py']
['user1:', 'user1', 'user2:', 'user2', 'user3:', 'user3', 'user4:', 'user4']
['', '', 'user1: user1', 'user2: user2', 'user3: user3', 'user4: user4']
字符串的拼接
# 组合
ips = ['172', '25', '254', '250']
# 将ips里面的每个元素拼接在一起, 拼接符为.;
print(".".join(ips))
print("-".join(ips))
测试
172.25.254.250
172-25-254-250