字符串基础
Posted norasgao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串基础相关的知识,希望对你有一定的参考价值。
字符串
索引 & 切片
同样适用于:列表,元组等
切片:
截取完毕后不改变原数据类型
列表的索引:
索引出的部分 = 数据本身的类型
可能是整数,字符串,元组或其他
列表的切片:
截取出的部分 = 列表类型
?
lst = [1, ‘a‘, [‘one‘, ‘two‘]]
print(type(lst[0])) #<class ‘int‘>
print(type(lst[1])) #<class ‘str‘>
print(type(lst[2])) #<class ‘list‘>
print(type(lst[0:2])) #<class ‘list‘>
?
取正值 & 取负值的切片如何判断?
首先看步长
正值 从左到右
→ [n:m:1],m的值为索引+1
负值 从右到左
← [n:m:-1],m的值为索引-1
?
str = ‘abcdefg‘
print(str[0:3:1]) #abc
print(str[-7:-4:1]) #abc
print(str[2::-1]) #cba ♦首位正值逆向索引值,不是[2:0:-1]或[2:-1:-1]
print(str[-5:-8:-1]) #cba
?
修改
字符串可以被修改吗?
不可以。
?
str = ‘abcdefg‘
str[0] = ‘A‘
print(str)
# TypeError: ‘str‘ object does not support item assignment
str = ‘123456‘
str.replace(‘1‘,‘999‘)
print(str)
# 123456
?
有方法可以改变字符串吗?
有。
任何方法都不会改变原字符串,但是可以通过拼接、重新赋值来“改变”。
?
a = ‘say hi‘
print(a, id(a))
b = a[0:3] + ‘ hello‘
print(b, id(b))
#say hi 1922527765256
#say hello 1922528764464
?
♦ 不同于列表,对列表使用方法,会改变原列表
?
lst = [1,2,3,4,5]
lst.append(6)
print(lst)
# [1, 2, 3, 4, 5, 6]
?
字符串的方法们
① str.count(‘x’) # ‘x’在str中出现的次数
?
str = ‘aabbccdd‘
print(‘a‘, str.count(‘a‘))
# a 2
?
② str.startswith(‘x’) # 判断是否以’x’开头
str.endswith(‘x’) # 判断是否以’x’结尾
?
str = ‘aabbccdd‘
print(‘startswith-a‘, str.startswith(‘z‘))
print(‘endswith-ccdd‘, str.endswith(‘ccdd‘))
# startswith-a False
# endswith-ccdd True
?
③ str.find(‘x’, beg = 0, end = len(str)) #寻找 ‘x’ 元素的索引值
♦ 找不到则显示 -1
str.index(‘x’, beg = 0, end = len(str))
♦ 找不到则报错
♦ ♦若str中有多个相同元素’x’, 则只返回最左一个的索引值
?
str = "you will when you believe."
print(str.find(‘u‘))
print(str.index(‘u‘))
print(str.find(‘s‘))
print(str.index(‘s‘))
# 2
# 2
# -1
# ValueError: substring not found
?
④ str.strip() #默认删除首尾的空白符(包括’ ’, ‘ ’, ’ ’, ‘’)
str.strip(‘xyz’) #删除首尾的’x’和‘y’和‘z’
?
str = ‘xxx Caesar zzz‘
print(str.strip(‘xyz‘))
# ---Caesar---
?
str.lstrip() & str.rstrip()
⑤ list(str) #将字符串按各字符分割成列表
?
str = ‘Caesar‘
print(list(str))
# [‘C‘, ‘a‘, ‘e‘, ‘s‘, ‘a‘, ‘r‘]
?
⑥ str.split( str = ‘ ’, num = str.count(str)) # 分隔符,分割次数
♦ 输出一个列表
?
str = ‘Joseph Joestar‘
print(str.split())
print(str.split(‘Jo‘))
# [‘Joseph‘, ‘Joestar‘]
# [‘‘, ‘seph ‘, ‘estar‘]
?
⑦ str.replace(‘old’, ‘new’, ’max_num’)
♦ 第三个参数指替换不超过max_num次数,默认全部替换
?
str = ‘Joseph Joestar‘
print(str.replace(‘Joseph‘, ‘Jonathan‘))
# Jonathan Joestar
?
⑧ str.isdigit() # 是否全为数字
str.isalpha() # 是否全为字母
str.isalnum() # 是否只有数字/字母
♦ 注意是否含有空字符
?
str = ‘Joseph Joestar‘
print(str.isdigit())
print(str.isalpha())
print(str.isalnum())
# False *3
?
以上是关于字符串基础的主要内容,如果未能解决你的问题,请参考以下文章